CMake构建C++项目的核心是编写CMakeLists.txt并生成原生构建系统;需创建源码和CMakeLists.txt,执行out-of-source构建(如mkdir build && cd build && cmake ..),再用make/ninja/VS编译运行。

用CMake构建C++项目,核心是写好CMakeLists.txt,然后用命令行生成并调用原生构建工具(如Make、Ninja或Visual Studio)。它不直接编译代码,而是“生成构建系统”,让项目更易跨平台、可维护。
第一步:准备基础文件结构
一个最小可行的C++项目通常包含:
- 源码文件(如
main.cpp) - 顶层
CMakeLists.txt(必需,放在项目根目录)
例如,新建一个简单项目:
hello/ ├── CMakeLists.txt └── main.cpp
main.cpp 内容可以是标准的 "Hello, World!";CMakeLists.txt 至少要指定最低CMake版本、项目名和可执行文件构建规则:
立即学习“C++免费学习笔记(深入)”;
cmake_minimum_required(VERSION 3.10) project(hello)add_executable(hello main.cpp)
第二步:生成构建文件(out-of-source 构建)
推荐在单独的构建目录中运行 CMake,避免污染源码。例如:
mkdir build && cd build cmake .. # 从上级目录读取 CMakeLists.txt
这会根据当前平台自动选择生成器(Linux/macOS 默认 Makefile,Windows 默认 Visual Studio)。你也可以显式指定:
cmake -G "Unix Makefiles" ..-
cmake -G "Ninja" ..(需提前安装 Ninja) -
cmake -G "Visual Studio 17 2022" -A x64 ..(Windows)
第三步:编译与运行
生成完成后,在构建目录中调用对应构建工具:
- Makefile:运行
make(或make hello) - Ninja:运行
ninja(或ninja hello) - Visual Studio:打开生成的
hello.sln文件,或用命令cmake --build .
构建成功后,可执行文件出现在构建目录下(如 build/hello),直接运行即可。
进阶提示:常用配置项
实际项目中常需要设置标准、优化选项、查找依赖等。例如:
- 指定C++标准:
set(CMAKE_CXX_STANDARD 17) - 开启调试信息:
set(CMAKE_BUILD_TYPE Debug)(在cmake命令中加-DCMAKE_BUILD_TYPE=Debug更常用) - 添加头文件路径:
target_include_directories(hello PRIVATE include/) - 链接第三方库:
find_package(Threads REQUIRED)+target_link_libraries(hello Threads::Threads)
这些都写在 CMakeLists.txt 中,CMake 会自动处理平台差异。
不复杂但容易忽略:每次修改 CMakeLists.txt 后,如果已生成过构建文件,只需在构建目录里重新运行 cmake . 或 cmake ..,无需删掉整个 build 目录(除非改了生成器或关键变量)。










