CMAKE_COMPILER_IS_GNUCXX

自 3.24 版本弃用: Use the CMAKE_CXX_COMPILER_ID variable instead.

The CMAKE_COMPILER_IS_* variables were used in early CMake versions before the introduction of CMAKE_<LANG>_COMPILER_ID variables in CMake 2.6.

The CMAKE_COMPILER_IS_GNUCXX variable is set to boolean true if the C++ (CXX) compiler is GNU.

Examples

In earlier versions of CMake, the CMAKE_COMPILER_IS_GNUCXX variable was used to check if the CXX compiler was GNU:

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

Starting with CMake 2.6, the CMAKE_CXX_COMPILER_ID variable should be used instead:

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

When upgrading code, consider whether additional CXX compilers should be targeted beyond just GNU. In the past, the LCC and QCC compilers also had this variable set (see CMP0047 and CMP0129 policies for details). To account for this, the following approach can be used:

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