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)
相关推荐
一个平凡而乐于分享的小比特12 小时前
Autoconf:Linux自动生成Makefile的详解
makefile·cmake·autoconf
张世争3 天前
windows clion MingW cmake 编译运行 FreeRTOS
windows·freertos·mingw·cmake·clion
十五年专注C++开发4 天前
CMake进阶:核心命令get_filename_component 完全详解
开发语言·c++·cmake·跨平台编译
麻辣长颈鹿Sir6 天前
CMAKE指令集
linux·运维·windows·cmake·cmake指令集
lunatic77 天前
CMake 常用内置变量说明
c++·cmake
ALex_zry8 天前
CMake变量传递与宏定义技术详解:从问题到解决方案
开发语言·spring·cmake·条件编译
十五年专注C++开发10 天前
CMake进阶:vcpkg中OpenSSLConfig.cmake详解
c++·windows·cmake·openssl·跨平台编译
Source.Liu12 天前
【CMake】CMake 基础笔记
cmake
Source.Liu13 天前
【CMake】 `set_target_properties()` 命令详解
cmake