CMP0056 — CMake 4.2.6 Documentation

# CMP0056

Warning

The `OLD` behavior of this policy was removed in CMake version 4.0. This policy must be set to `NEW` by a call to `cmake_minimum_required()` or `cmake_policy()`.

Added in version 3.2.

Honor link flags in `try_compile()` source-file signature.

The `try_compile()` command source-file signature generates a `CMakeLists.txt` file to build the source file into an executable. In order to compile the source the same way as it might be compiled by the calling project, the generated project sets the value of the `CMAKE_<LANG>_FLAGS` variable to that in the calling project. The value of the `CMAKE_EXE_LINKER_FLAGS` variable may be needed in some cases too, but CMake 3.1 and lower did not set it in the generated project. CMake 3.2 and above prefer to set it so that linker flags are honored as well as compiler flags. This policy provides compatibility with the pre-3.2 behavior.

The `OLD` behavior for this policy is to not set the value of the `CMAKE_EXE_LINKER_FLAGS` variable in the generated test project. The `NEW` behavior for this policy is to set the value of the `CMAKE_EXE_LINKER_FLAGS` variable in the test project to the same as it is in the calling project.

If the project code does not set the policy explicitly, users may set it on the command line by defining the `CMAKE_POLICY_DEFAULT_CMP0056` variable in the cache.

This policy was introduced in CMake version 3.2. Prior to removal in CMake version 4.0, it could be set by `cmake_policy()` or `cmake_minimum_required()`. If it was not set, CMake did not warn by default, and used `OLD` behavior.

See documentation of the `CMAKE_POLICY_WARNING_CMP0056` variable to control the warning in CMake versions before 4.0.