Differences between revisions 2 and 4 (spanning 2 versions)
Revision 2 as of 2022-08-22 12:14:26
Size: 991
Comment:
Revision 4 as of 2023-04-04 15:09:24
Size: 1150
Comment:
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:

'''`cmake(1)`''' is a build system generator. It is used alongside/over build systems including [[Make|make(1)]] and [[Ninja|ninja(1)]].
Line 11: Line 13:
Most operating systems offer a `cmake` package. All [[Linux]] and [[BSD]] distributions offer a `cmake` package.
Line 41: Line 43:
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/ArchLinuxPackaging|Arch]] prescribe specific [[C/BuildFlags|C]] and [[C++/BuildFlags|C+ build flags]] that will be overridden by this option. 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.

CMake

cmake(1) is a build system generator. It is used alongside/over build systems including make(1) and 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 Arch Linux prescribe specific C and C+ build flags that will be overridden by this option.


CategoryRicottone

CMake (last edited 2023-04-04 15:10:18 by DominicRicottone)