cmake指定c ++版本
时间: 2025-03-15 18:05:28 浏览: 55
### 如何在 CMake 中设置或指定 C++ 标准版本
在 CMake 中可以通过 `set` 命令来指定项目的 C++ 标准版本。具体方法是通过修改 `CMAKE_CXX_STANDARD` 变量的值,将其设为期望的标准版本号,例如 11 表示 C++11[^1]。
以下是完整的实现方式:
#### 设置 C++ 标准
为了确保编译器按照指定的 C++ 版本进行编译,在 `CMakeLists.txt` 文件中可以加入如下代码片段:
```cmake
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)
set(CMAKE_CXX_EXTENSIONS False)
```
- **`CMAKE_CXX_STANDARD`**: 定义目标 C++ 的标准版本,可选值有 11、14、17 和 20 等[^5]。
- **`CMAKE_CXX_STANDARD_REQUIRED`**: 如果该标志被设置为 `True`,则当编译器不支持所请求的标准时,CMake 将发出错误消息并停止配置过程[^3]。
- **`CMAKE_CXX_EXTENSIONS`**: 当其值为 `False` 时表示禁用特定于编译器的语言扩展;如果希望启用这些扩展,则应将此参数设置为 `True`。
#### 配置实例
下面是一个简单的例子展示如何在一个实际项目中的 `CMakeLists.txt` 文件里应用上述设定以采用 C++17 标准:
```cmake
cmake_minimum_required(VERSION 3.10)
project(MyProject LANGUAGES CXX)
# Set the desired C++ standard to be used.
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)
set(CMAKE_CXX_EXTENSIONS False)
add_executable(my_program main.cpp helper.cpp)
```
在这个案例中,我们不仅指定了最低需求版本为 3.10 而且还定义了一个名为 MyProgram 的执行文件,并强制它依据 C++17 进行构建[^2]。
另外需要注意的是,除了利用 CMake 来管理复杂的多源码工程外,也可以手动向 g++ 编译指令添加 `-std=c++xx` 参数 (其中 xx 是具体的年份代号),比如 `$ g++ *.cpp -std=c++11 -o app` ,这同样能够达到切换不同 c++ 标准的目的但是缺乏自动化优势[^4]。
阅读全文
相关推荐


















