CMAKE_COMPILER_IS_GNUCXX

已弃用,自 3.24 版本起: 请改用 CMAKE_CXX_COMPILER_ID 变量。

在 CMake 2.6 版本引入 CMAKE_<LANG>_COMPILER_ID 变量之前,早期 CMake 版本使用了 CMAKE_COMPILER_IS_* 变量。

如果 C++ (CXX) 编译器是 GNU,则 CMAKE_COMPILER_IS_GNUCXX 变量将被设置为布尔值 true。

示例

在早期版本的 CMake 中,CMAKE_COMPILER_IS_GNUCXX 变量用于检查 CXX 编译器是否为 GNU。

if(CMAKE_COMPILER_IS_GNUCXX)
  # GNU C++ compiler-specific logic.
endif()

从 CMake 2.6 开始,应改用 CMAKE_CXX_COMPILER_ID 变量。

if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
  # GNU C++ compiler-specific logic.
endif()

升级代码时,请考虑是否需要针对除 GNU 之外的其他 CXX 编译器。过去,LCCQCC 编译器也设置了此变量(有关详细信息,请参阅 CMP0047CMP0129 策略)。为解决此问题,可以使用以下方法:

# Targeting GNU, LCC, and QCC compilers for CXX:
if(CMAKE_CXX_COMPILER_ID MATCHES "^(GNU|LCC|QCC)$")
  # ...
endif()