What Is CMake
CMake is a cross-platform build system generator. You write CMakeLists.txt once, then generate platform-specific build files (Makefile, Ninja files, Visual Studio projects, and more).
On Linux, a typical workflow is:
- Write
CMakeLists.txt
- Generate build system
- Build
1
2
3
4
|
mkdir build
cd build
cmake ..
make
|
Template 1: Single Source File
1
2
3
4
|
cmake_minimum_required(VERSION 3.5)
project(Demo1)
add_executable(demo1 test01.cpp)
|
Template 2: Multiple Source Files
1
2
3
4
|
cmake_minimum_required(VERSION 3.5)
project(Demo2)
add_executable(demo2 main.cpp utils.cpp)
|
Template 3: Include Directories + Libraries
1
2
3
4
5
6
|
cmake_minimum_required(VERSION 3.5)
project(Demo3)
include_directories(include)
add_executable(demo3 src/main.cpp src/foo.cpp)
target_link_libraries(demo3 pthread)
|
Recommended Project Structure
1
2
3
4
5
|
project/
CMakeLists.txt
src/
include/
build/
|
Tips
- Keep out-of-source builds (
build/) to avoid polluting source tree.
- Use
target_* commands (target_include_directories, target_link_libraries) for modern CMake style.
- Pin a minimum CMake version to avoid compatibility surprises.