# How to build and use Gaudi with CMake ## Requirements The CMake configuration of Gaudi is based on the version 3.15.0 or later of CMake. On lxplus (SLC6 and CentOS7) you need to call something **like**: ```sh $ export PATH=/cvmfs/sft.cern.ch/lcg/contrib/CMake/3.18.3/Linux-x86_64/bin:$PATH ``` ## Quick Start Gaudi requires some uncommon external libraries, so the quickest way to build it is to use the CERN SFT provided LCG views, for example: ```sh . /cvmfs/sft.cern.ch/lcg/views/LCG_101/x86_64-centos7-gcc11-opt/setup.sh ``` We suggest the use of [Ninja](https://ninja-build.org/) to build, if you wish to do so, you can use these settings: ```sh export CMAKE_GENERATOR=Ninja ``` At this point the environment is good enough to use a standard CMake procedure: ```sh cd Gaudi cmake -S . -B build -DCMAKE_BUILD_TYPE=Release cmake --build build ``` ### Older versions of CERN SFT LCG views Prior to LCG 99, the versions of CMake and Ninja in the CERN SFT LCG views were not good enough and Python was still 2.x, so the recipe to build Gaudi is slightly different in that case: ```sh . /cvmfs/sft.cern.ch/lcg/views/LCG_97a/x86_64-centos7-gcc9-opt/setup.sh export PATH=/cvmfs/sft.cern.ch/lcg/contrib/CMake/3.18.3/Linux-x86_64/bin:$PATH export PATH=/cvmfs/sft.cern.ch/lcg/contrib/ninja/1.10.0/Linux-x86_64:$PATH export CMAKE_GENERATOR=Ninja cd Gaudi cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DGAUDI_USE_PYTHON_MAJOR=$(python -c "import sys; print(sys.version_info[0])") cmake --build build ``` ## Run from the build directory For testing and debugging there is no need to install, but Gaudi requires some environment variables to be set, so the build procedure generates a special script (`build/run`) that can be used to run a command in the correct environment, for example: ```sh build/run gaudirun.py --help ``` or ```sh build/run bash ``` to have a shell with the correct environment. ## Testing Gaudi comes with a pool of tests (built by default, unless one passes the option `-DBUILD_TESTING=FALSE` to Gaudi) that can be run with [`ctest`](https://cmake.org/cmake/help/latest/manual/ctest.1.html): ```sh cd build ctest ``` ## Resources * [CMake documentation](http://www.cmake.org/cmake/help/documentation.html)