CXX_STANDARD 使用
时间: 2024-08-28 21:01:13 浏览: 86
`CXX_STANDARD`是在CMake中用于设置C++源代码编译使用的标准的一项指令。在CMakeLists.txt文件中,通过`set(CMAKE_CXX_STANDARD [version] [COMPILE_FLAGS])`来配置,`[version]`是要使用的C++标准版本号,例如`CXX_STANDARD 14`表示使用C++14标准,`CXX_STANDARD 20`表示C++20标准,以此类推。
设置`CXX_STANDARD`的意义在于,当构建系统处理C++源代码时,它会强制编译器使用指定的标准,确保你的代码符合该版本的语言特性和规则,这对于避免兼容性问题和利用新功能非常重要。
值得注意的是,`CXX_STANDARD`只影响新创建的源文件,不会修改已存在的源文件的编译标准。此外,一些较旧的编译器可能并不支持所有的标准版本,因此在使用`CXX_STANDARD`时需要确认你的工具链支持所选的标准。
相关问题
set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD_REQUIRED ON)
这段代码是 CMakeLists.txt 文件中的两个指令,用于指定 C++ 编译器的标准版本和是否强制使用该标准版本。
其中,第一行的 `set(CMAKE_CXX_STANDARD 14)` 指定了使用 C++14 标准进行编译。C++14 是 C++11 的升级版,引入了一些新的特性和改进,并且在现代编译器中得到了广泛支持。
第二行的 `set(CMAKE_CXX_STANDARD_REQUIRED ON)` 则表示必须使用指定的 C++ 标准进行编译。如果编译器不支持所指定的标准,就会出现编译错误。
这两行指令通常在 CMake 项目中用于指定编译器的标准版本,以确保代码在不同的平台和编译环境中具有一致的行为。
``` if(CMAKE_SIZEOF_VOID_P EQUAL 4)```set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF)
这个代码片段是在CMake配置文件中使用的条件判断语句,主要用于确定目标平台的指针大小,并根据此信息设置C++标准和其他选项。
具体解释如下:
1. `if(CMAKE_SIZEOF_VOID_P EQUAL 4)`:这条语句检查`void*`指针的大小是否等于4字节。通常来说,在32位系统上运行时,指针占用的是4个字节;而在64位操作系统下,则是指针占8个字节。因此这里的条件表达式是用来检测构建环境是不是基于32位架构。
2. 若上述条件成立(即当前环境确实是一个32位体系结构),则接下来会执行下面几行命令:
- `set(CMAKE_CXX_STANDARD 11)` :将 C++ 编译版本设为 C++11 标准;
- `set(CMAKE_CXX_STANDARD_REQUIRED ON)` : 强制要求项目按照指定的标准进行编译,如果所选编译器不支持该标准就会报错;
- `set(CMAKE_CXX_EXTENSIONS OFF)` : 禁止使用非标准的语言特性 (如一些特定于GCC 或者 Clang 的扩展),这有助于保证跨平台的一致性和兼容性.
以上设定可以确保当程序在一个32位平台上被编译时能够满足一定的编码规范和语言特性需求。需要注意的是,对于64位平台或其他情况并没有给出特别处理措施,默认可能是依赖于更高层次的配置或是保持原有状态不变。
--
阅读全文
相关推荐

















