
建议项目结构如下:
your_project/
├── CMakeLists.txt # CMake 配置文件
├── main.c # 源代码示例
└── build/ # 构建目录(建议 Out-of-Source)示例 main.c:
#include <stdio.h>
int main() {
printf("Hello, CMake!\n");
return 0;
}示例 CMakeLists.txt:
cmake_minimum_required(VERSION 3.10)
project(HelloC C)
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED ON)
add_executable(${PROJECT_NAME} main.c)平台 | 推荐工具 |
|---|---|
Linux / macOS | gcc, clang, make, ninja |
Windows (MinGW) | MinGW-w64,MSYS2,配置好环境变量(gcc, make) |
mkdir build
cd buildcmake ..cmake -G "MinGW Makefiles" ..cmake --build ../HelloC.\HelloC.exeyour_project/
├── CMakeLists.txt
├── main.c
└── build/
├── CMakeCache.txt
├── CMakeFiles/
├── Makefile
├── cmake_install.cmake
└── HelloCyour_project/
├── CMakeLists.txt
├── main.c
└── build/
├── CMakeCache.txt
├── CMakeFiles/
├── Makefile
├── cmake_install.cmake
└── HelloC.exe操作 | 命令示例 | 说明 |
|---|---|---|
构建项目 | cmake --build . | 自动调用构建工具 |
清理构建产物 | cmake --build . --target clean | 删除中间文件(非源码) |
指定目标构建 | cmake --build . --target HelloC | 构建指定 target |
使用 Ninja 构建系统 | cmake -G "Ninja" .. | 更快,需预装 Ninja |
设置 Release 模式 | cmake -DCMAKE_BUILD_TYPE=Release .. | 仅适用于单配置生成器(非 Visual Studio) |
操作 | Linux/macOS | Windows (MinGW) |
|---|---|---|
创建目录 | mkdir build && cd build | mkdir build && cd build |
配置 | cmake .. | cmake -G "MinGW Makefiles" .. |
编译 | cmake --build . | cmake --build . |
运行 | ./HelloC | .\HelloC.exe |
清理 | cmake --build . --target clean | cmake --build . --target clean |
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED ON)-G "MinGW Makefiles",避免默认生成 Visual Studio 工程。cmake --build . --target clean 清除构建产物,但保留缓存和构建文件。CMake 构建流程简单且跨平台:
cmake 生成构建文件cmake --build . 编译通过合理配置和跨平台命令,CMake 方便地支持多操作系统和构建工具。
CMake 有了更深入的理解和认识。