CMake¶
Architecture of the build system¶
The build system aims to be subdivided to locally generate files.
It is intended to build as much as possible out of source (when possible).
A cmake/ folder contains all the tools/macro/functions to lighter the CMakeLists.txt.
The CMakeList.txt file present at the root of the project contains the entry point for the compilation. It also holds all the available options for the compilation.
The
cmake/Requirements.cmakeis being the first imported and ensure that all the softwares/dependencies required for Muscat compilation are present on the sytem. It however comes after the options to allow tuning of what are the requirements accordingly.There is a
CMakeLists.txtin each source directories (cpp_src, src) as well as in the cpp_generators folder.
CMake Compilation¶
Compilation (using ninja) in “release” can be done using the folowing commands: For more information about option of cmake please refer to the cmake documentaion [1]:
mkdir cmake_build
cd cmake_build
cmake -DPython_FIND_STRATEGY=LOCATION -DCMAKE_BUILD_TYPE=Release --fresh ..
We recommend to use Ninja build system if available on your system by replacing the last command by:
To build the project:
cmake --build .
To install (this is experimental not supported for all OS/python version/distributions)
cmake --install .
To run all the tests
ctest
Notes for maintaining the build system¶
As the build system is hierarchical, it is necessary to explicity specify when a variable will be reused in a parent scope by writing:
set(MyVar ${MyVar} PARENT_SCOPE) #Export it outside of the file
Footnotes