CMake 常用预设命令说明

CMake 常用预设命令说明

在使用 CMake 构建 C/C++ 项目时,我们通常需要在 CMakeLists.txt 文件中定义一些基础设置,以确保项目能够在不同平台和编译器下正确构建。本文将介绍一些最常用的预设命令,包括指定 CMake 版本、设置编译模式、显示构建信息以及指定 C++ 标准等。


一、指定 CMake 的最小版本

CMakeLists.txt 的开头,推荐使用以下命令指定所需的最低 CMake 版本:

cmake 复制代码
cmake_minimum_required(VERSION 3.16)

该命令的作用是告诉 CMake,当前项目至少需要 3.16 版本才能正确运行。

如果使用了某些新特性(例如 target_link_libraries 的现代用法),而版本太低,就会在配置阶段报错。


二、定义项目名称及语言

定义项目名称和使用的编程语言:

cmake 复制代码
project(MyProject LANGUAGES CXX)
  • MyProject 是项目名称;
  • LANGUAGES 可以指定 C, CXX, CUDA, Fortran 等;
  • 声明了语言后,CMake 会自动为该语言加载相应的规则和工具链。

三、设置编译模式(构建类型)

CMake 通常支持以下几种构建类型:

  • Debug ------ 含有调试信息,不进行优化;
  • Release ------ 开启优化,去除调试信息;
  • RelWithDebInfo ------ 优化同时保留部分调试信息;
  • MinSizeRel ------ 优化为最小体积。

可以通过以下方式设置默认的构建类型:

cmake 复制代码
set(CMAKE_BUILD_TYPE Release)

💡 注意:

  • 在多配置生成器(如 Visual Studio、Xcode)中,CMAKE_BUILD_TYPE 无效,需要在生成时选择配置。
  • 对于单配置生成器(如 Makefile、Ninja),上述变量才生效。

四、控制编译输出与信息显示

在开发调试中,可能需要输出更多的构建信息。CMake 提供了以下命令来控制消息显示:

cmake 复制代码
message(STATUS "当前构建类型: ${CMAKE_BUILD_TYPE}")
message(WARNING "这是一个警告信息")
message(FATAL_ERROR "出现致命错误,终止配置")

常用的消息等级包括:

  • STATUS ------ 普通状态信息;
  • WARNING ------ 发出警告,不中断;
  • FATAL_ERROR ------ 输出错误并停止执行。

此外,可通过命令行参数控制详细程度,例如:

bash 复制代码
cmake -DCMAKE_VERBOSE_MAKEFILE=ON ..

这会让构建系统在编译时显示具体的命令行。


五、指定 C++ 标准版本

在现代 CMake 中,推荐使用以下语法来指定所需的 C++ 标准版本:

cmake 复制代码
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

说明:

  • CMAKE_CXX_STANDARD 指定 C++ 标准(如 11、14、17、20、23 等);
  • CMAKE_CXX_STANDARD_REQUIRED 表示版本必须满足或高于指定标准;
  • CMAKE_CXX_EXTENSIONS OFF 关闭编译器特有的扩展(如 GNU 扩展)。

六、典型的 CMakeLists.txt 示例

以下是一个简单示例,展示了本文中提到的关键命令:

cmake 复制代码
cmake_minimum_required(VERSION 3.20)
project(MyProject LANGUAGES CXX)

# 设置构建类型
set(CMAKE_BUILD_TYPE Debug)

# 指定 C++17 标准
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

# 输出构建信息
message(STATUS "构建类型:${CMAKE_BUILD_TYPE}")
message(STATUS "C++标准版本:${CMAKE_CXX_STANDARD}")

# 添加源文件并生成可执行文件
add_executable(MyProject main.cpp)

运行命令构建项目:

bash 复制代码
cmake -B build -S .
cmake --build build

七、总结

功能 常用命令 示例
指定 CMake 版本 cmake_minimum_required cmake_minimum_required(VERSION 3.20)
定义项目 project project(MyApp LANGUAGES CXX)
设置构建模式 set(CMAKE_BUILD_TYPE ...) set(CMAKE_BUILD_TYPE Release)
输出信息 message(STATUS ...) message(STATUS "构建类型:${CMAKE_BUILD_TYPE}")
C++ 标准版本 set(CMAKE_CXX_STANDARD ...) set(CMAKE_CXX_STANDARD 17)
相关推荐
郝学胜_神的一滴4 天前
CMake 30:循环语法全解|foreach_while双循环精讲、迭代技巧与实战避坑指南
c++·cmake
郝学胜_神的一滴6 天前
CMake 27:缓存变量的特性、语法、类型与实操全解
c++·cmake
郝学胜_神的一滴8 天前
CMake 026:属性体系精讲、四大作用域全解 & 实战代码落地
c++·cmake
郝学胜_神的一滴13 天前
CMake 021: IF 条件判据详诠
c++·cmake
郝学胜-神的一滴14 天前
CMake 019:程序生成与清理全解析
开发语言·c++·qt·程序人生·软件构建·cmake
郝学胜_神的一滴15 天前
CMake 018:解决头文件编译失效\&VS项目无法展示头文件难题
c++·cmake
郝学胜-神的一滴15 天前
CMake 017:彩色日志输出实战
linux·c语言·开发语言·c++·软件工程·软件构建·cmake
charlee4417 天前
Unity项目适配华为鸿蒙系统的原生库加载问题排查与解决
华为·unity3d·鸿蒙·cmake·c/c++·relro
郝学胜_神的一滴18 天前
CMake 016:深入浅出变量核心用法
c++·cmake