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)
相关推荐
加成BUFF2 小时前
Qt开发核心工具:CMake与qmake全面解析
开发语言·qt·cmake·qmake
青山是哪个青山20 小时前
第二节:CMake 命令行工具与工程生命周期
c++·cmake
青山是哪个青山20 小时前
第一节:CMake 简介
linux·c++·cmake
青山是哪个青山1 天前
第三节:CMake 工程实践场景笔记
c++·cmake
张世争3 天前
windows 使用 cmake 方式源码编译 SDL2
windows·cmake·sdl2
特立独行的猫a3 天前
C++开发中的构建工具:现代CMake实战速成
开发语言·c++·cmake·入门教程
微笑倾城5 天前
Windows平台下CMake工程中使用protobuf
c++·cmake
010米粉0105 天前
Qt Cmake之路(一):Cmake变量语法
开发语言·qt·cmake
Mr_WangAndy5 天前
cmake_第二章 CMake基础语法_cmake列表命令list(),字符串string()和aux_source_directory()
cmake·cmake列表list·cmake字符串string·源文件查找