CMP0137 — CMake 3.27.6 Documentation

# CMP0137

New in version 3.24.

`try_compile()` passes platform variables in project mode.

The `try_compile()` command source file signature propagates CMake variables containing platform settings, and those specified by the `CMAKE_TRY_COMPILE_PLATFORM_VARIABLES` variable, into the generated test project. This helps the test project drive the toolchain the same way the calling project will. In CMake 3.23 and below, the whole-project signature does not propagate platform variables automatically. CMake 3.24 and above prefer to propagate platform variables in the whole-project signature. This policy provides compatibility with projects that have not been updated to expect the behavior.

The `OLD` behavior for this policy is to not pass any additional variables to the whole-project signature. The `NEW` behavior for this policy is to pass the same variables that the source file signature does.

Regardless of the policy setting, the `CMAKE_TRY_COMPILE_NO_PLATFORM_VARIABLES` variable may be set to suppress passing the platform variables through either signature.

This policy was introduced in CMake version 3.24. Use the `cmake_policy()` command to set this policy to `OLD` or `NEW` explicitly. Unlike many policies, CMake version 3.27.6 does not warn by default when this policy is not set and simply uses `OLD` behavior.

Note

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