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)
相关推荐
小王C语言1 天前
cmake教程
c++·cmake
雾里看山11 天前
源码目录、构建目录与 out-of-source build
c++·软件构建·cmake
ysu_031412 天前
工具链通关02-CMake进阶超100个文件
cmake
十五年专注C++开发13 天前
CMake基础:BUILD_INTERFACE 与 INSTALL_INTERFACE 完全解析
c++·cmake·build_interface
羑悻的小杀马特15 天前
百度ASR+BRPC+ETCD高并发高可用架构搭建,C++客户端API封装+语音识别子服务注册发现+全链路测试调优终极指南!
架构·sdk·etcd·cmake·百度智能云·brpc·语音识别子服务
_YouziTech_16 天前
VS Code环境下LVGL模拟器的配置与运行
visualstudio·mingw·cmake·lvgl·vs code·模拟器·sdl2
用户39796786111619 天前
CMake-构建目标与属性
cmake
用户39796786111622 天前
CMake常用指令-string
cmake
Shadow(⊙o⊙)1 个月前
CMake实现客户端、服务端交流
组件·cmake
繁重的秋春1 个月前
Qt6.0下的CMake的部署配置
qt·cmake