C++项目如何使用CMake进行构建?(入门教程)

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版本、项目名和可执行文件构建规则:

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 2025" -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 目录(除非改了生成器或关键变量)。