CMake 相关变量总结(在工作中需要使用的)

1. 编译选项相关的:

1.1. CMAKE_CXX_EXTENSIONS

CMAKE_CXX_EXTENSIONS 是 CMake 中一个重要的编译选项控制变量,用于控制是否启用编译器特定的 C++ 扩展。

1.1.1 范例:

# 设置示例
set(CMAKE_CXX_EXTENSIONS OFF)  # 使用标准C++
# 或
set(CMAKE_CXX_EXTENSIONS ON)   # 使用GNU扩展(默认)

1.1.2 主要区别

当设置为 OFF 时:
使用严格的标准 C++ 模式
例如:-std=c++11, -std=c++14, -std=c++17
禁用编译器特有的非标准扩展
提高代码可移植性
当设置为 ON 时(默认):
使用 GNU 扩展模式

例如:-std=gnu++11, -std=gnu++14, -std=gnu++17
启用编译器特有的扩展
可能降低代码可移植性
实际影响示例
假设有以下代码:


#include <stdio.h>
#include <bits/stdc++.h>  // GCC特有头文件int main() {int x = 5;printf("%d\n", x);return 0;
}

CMAKE_CXX_EXTENSIONS ON:可能编译通过,CMAKE_CXX_EXTENSIONS OFF:可能报错,因为 <bits/stdc++.h> 不是标准头文件