= CMake = '''`cmake(1)`''' is a build system generator. It is used alongside/over build systems including [[Make|make(1)]] and [[Ninja|ninja(1)]]. <> ---- == Installation == All [[Linux]] and [[BSD]] distributions offer a `cmake` package. ---- == Usage == === Using a CMakeLists File === The '''`CMakeLists.txt` file''' defines targets to be built. First, create a build folder to run `cmake(1)` within. A large number of cache, header, and build files will be created. Generally the `build` folder is used for this. Second, try: {{{ cmake .. }}} If there are multiple targets, there may be additional arguments required. Finally, run the generated build pipeline. For Linux this will typically be a [[Make]]. === Options === It is common to see the `-DCMAKE_BUILD_TYPE=Release` option in use. This can have unintended consequences on the compilation step. Operating systems such as [[Linux/Arch/Packaging|Arch Linux]] prescribe specific [[C/BuildFlags|C]] and [[C++/BuildFlags|C+ build flags]] that will be overridden by this option. ---- == See also == [[https://cmake.org/cmake/help/latest/|CMake reference documentation]] [[https://man.archlinux.org/man/cmake.1|cmake(1)]] ---- CategoryRicottone