Sim is an open source platform for carrying out algorithmic contests and programming classes.
This repository contains all Sim projects as a monorepo. You can explore individual repositories here:
Web server and utilities around that.
Tool for creating and managing problem packages.
The library used internally by the subprojects. It contains common functionality e.g. the Sim Sandbox.
First of all, you need to set up the build directory. The simplest way to do it is like this:
meson setup buildThis will setup build directory build/ in which all subproject will be build but no install targets are made. To build only subprojects you can use -Dbuild=suproject1,subproject2,... option. E.g.
meson setup build --wipe -Dbuild=sipFor detailed option description you can inspect meson_options.txt file.
By default no subproject is marked to be installed on meson install -C build. Marking subprojects to be installed is done with '-Dinstall=subproject1,subproject2,...' option. E.g.
meson setup build --wipe -Dbuild=sim,sip -Dinstall=sipThis command will build sim and sip subprojects, but will only mark sip to be installed.
Specifying subpojects to install also adds them to the list of subprojects to build.
For detailed option description you can inspect meson_options.txt file.
CC='sccache clang' CXX='sccache clang++' CC_LD=mold CXX_LD=mold meson setup build -Dc_args=-DDEBUG -Dcpp_args='-DDEBUG -D_GLIBCXX_DEBUG' -Db_sanitize=undefined -Db_lundef=false -Dinstall=sim --wipe && meson configure build --prefix $PWD/simJust run
meson compile -C buildor
ninja -C buildTo format all sources (clang-format is required):
ninja -C build formatTo lint all sources:
ninja -C build tidyor
./tidyTo lint specified sources:
./tidy path/to/source.cc other/source.hninja -C build scan-build