JuPedSim does not offer any Linux binaries. A compilation of the code is necessary.

Get the code

git clone https://github.com/JuPedSim/jpscore.git

Get dependencies

Before starting building jpscore and jpsreport it is necessary to install the required dependencies.

To do so, run the script scripts/setup-deps.sh, for example as follows:

mkdir build
cd build
../scripts/setup-deps.sh

This creates a new directory deps inside build with the required libraries.

How to build

Once you have installed all dependencies and cloned the repository continue with a ninja based build:

mkdir build
cd build
cmake -GNinja -DCMAKE_BUILD_TYPE=Debug <path-to-cmakelists> -DCMAKE_PREFIX_PATH=$(pwd)/deps
ninja

Alternatively you can generate a make based build with:

mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Debug <path-to-cmakelists> -DCMAKE_PREFIX_PATH=$(pwd)/deps
make -j$(nproc)
cmake -DCMAKE_BUILD_TYPE=Debug -DUSE_OPENMP=OFF <path-to-cmakelists> -DCMAKE_PREFIX_PATH=$(pwd)/deps

CMake configuration flags

The following configuration flags are available:

  • CMAKE_PREFIX_PATH must always be set to directory deps, where the dependencies are installed. See CMake documentation for detailed information.

  • USE_OPENMP defaults to ON (Disabled on Windows) Build jpscore with OpenMP support, generation will fail if OpenMP cannot be found. MSVC only support OpenMP 2.0 Standard and is therefor disabled on Windows.

  • BUILD_DOC defaults to OFF Build internal Doxygen based documentation

  • BUILD_CPPUNIT_TEST defaults to OFF Build unit tests and add them to ctest

  • BUILD_TESTING defaults to OFF Build full system tests and add them to ctest

  • BUILD_WITH_ASAN defaults to OFF (Does not support Windows) Build an additional target jpscore_asan with address and undefined behavior sanitizer enabled. Note there is an approx. 2x slowdown when using jpscore_asan over jpscore

  • CODE_COVERAGE defaults to OFF (Does not support Windows) Build unittests with code coverage. Following additional libraries are needed:

    • gcc: lcov
    • clang: llvm-cov and llvm-profdata