General information on CMake

  • CMake is a tool for build system configuration.
    It generates a chosen build system in the directory it was executed in. The build system to generate can be specified using the -G flag which defaults to Makefile. A list of all supported generators (e.g. for IDEs) can be found here.
  • Use the console tool ccmake or the gui cmake-guifor a more comfortable configuration.
  • The generated build system automatically reconfigures cmake when necessary.
  • It respects your environment variables CXX, CXX_FLAGS, … during configuration.
    Please use them to set your compiler and warning level of choice.
  • Invoke cmake with -DVariable=Value to set the cmake-internal variable Variable to Value.
    A complete list of variables recognised by cmake can be found here.
  • Use -DCMAKE_BUILD_TYPE to specify what type of build you would like Debug, Release, RelWithDebInfo, MinSizeRel
    CMake will select appropriate flag for you (e.g. -g, -O2). Specifying no BUILD_TYPE results in an un-optimised non-debug build.
  • The generated build system knows where the source directory is. It is thus possible to have multiple configurations using the same (e.g. build/debug/, build/release/)
  • Use -DBUILD_SHARED_LIBS=ON to build shared libraries, -DBUILD_SHARED_LIBS=OFF to build static libraries. In preCICE, we default to ON since v2.3.
  • To use ccacheor distccwith cmake please set the variable CXX_COMPILER_LAUNCHER.
  • Use -DCMAKE_INSTALL_PREFIX=/path/to/dir/ to specify the install prefix. Default is /usr/local on unix. Read more