And optionally:
- GraphViz (for visualisation images,
dotmust be in system path)
Clone the repository alongside its submodules (shallow submodule cloning is optional).
git clone --recurse-submodules --shallow-submodules https://github.com/dscrimieri/pcs
To correctly pull any newly added Git submodules to your local repository (git pull alone doesn't suffice):
git submodule update --recursive
Build the project using CMake or simply open it using an IDE that has CMake support.
cmake -S. -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
All of the tests can also be run with the following:
cd build
ctest --output-on-failure --verbose
app: contains a CLI executable application. Theexamples/subdirectory has pre-made examples to run.benchmarks: contains all the project's benchmarksdata: has some sample recipes and modelled resources#external: 3rd party dependencies added as Git submodulessrc/pcs: PCS library codetests: holds all tests & test data
The labelled transition systems parsed and generated can be visualised using the GraphViz tool.
The output generated in exports/ can be visualised entirely online here or here without installing GraphViz on your system.
Alternatively with GraphViz installed, the following command can be run for a given LTS file lts1.gv:
dot -Tpng lts1.gv -o lts1.png
Or for SVG format:
dot -Tsvg lts1.gv -o lts1.svg
To run benchmarks, navigate to bin/ directory, for a given benchmark executable's file (e.g. bm.exe) run the following:
bm.exe --benchmark_format=json
This is required because Google Benchmark's console output/VS runner doesn't report memory usage statistics, it is only given properly in the JSON format.