# CMP0129

New 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. Use the `cmake_policy()` command to set this policy to `OLD` or `NEW` explicitly. Unlike most policies, CMake version 3.27.2 does not warn by default when this policy is not set and simply 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.