CMP0129 — CMake 4.3.1 Documentation

# CMP0129

Added in version 3.23.

Compiler id for MCST LCC compilers is now `LCC`, not `GNU`.

CMake 3.23 and above recognize MCST LCC compiler as a different from `GNU`, with its own command line and set of capabilities. CMake now prefers to present this to projects by setting the `CMAKE_<LANG>_COMPILER_ID` variable to `LCC` instead of `GNU`. However, existing projects may assume the compiler id for LCC is `GNU` as it was in CMake versions prior to 3.23. Therefore this policy determines for MCST LCC compiler which compiler id to report in the `CMAKE_<LANG>_COMPILER_ID` variable after language `<LANG>` is enabled by the `project()` or `enable_language()` command. The policy must be set prior to the invocation of either command.

The `OLD` behavior for this policy is to use compiler id `GNU` (and set `CMAKE_<LANG>_COMPILER_VERSION` to the supported GNU compiler version.) `NEW` behavior for this policy is to use compiler id `LCC`, and set `CMAKE_<LANG>_SIMULATE_ID` to `GNU`, and `CMAKE_<LANG>_SIMULATE_VERSION` to the supported GNU compiler version.

This policy was introduced in CMake version 3.23. It may be set by `cmake_policy()` or `cmake_minimum_required()`. If it is not set, CMake does not warn by default, and uses `OLD` behavior.

See documentation of the `CMAKE_POLICY_WARNING_CMP0129` variable to control the warning.

Note

The `OLD` behavior of a policy is deprecated by definition and may be removed in a future version of CMake.