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 build
This 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=sip
For 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=sip
This 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/sim
Just run
meson compile -C build
or
ninja -C build
To format all sources (clang-format is required):
ninja -C build format
To lint all sources:
ninja -C build tidy
or
./tidy
To lint specified sources:
./tidy path/to/source.cc other/source.h
ninja -C build scan-build