New in version 3.8.
Honor language standard in try_compile()
source-file signature.
The try_compile()
source file signature is intended to allow callers to check whether they will be able to compile a given source file with the current toolchain. In order to match compiler behavior, any language standard mode should match. However, CMake 3.7 and below did not do this. CMake 3.8 and above prefer to honor the language standard settings for C
, CXX
(C++), and CUDA
using the values of the variables:
CMAKE_C_STANDARD
CMAKE_C_STANDARD_REQUIRED
CMAKE_C_EXTENSIONS
CMAKE_CXX_STANDARD
CMAKE_CXX_STANDARD_REQUIRED
CMAKE_CXX_EXTENSIONS
CMAKE_CUDA_STANDARD
CMAKE_CUDA_STANDARD_REQUIRED
CMAKE_CUDA_EXTENSIONS
This policy provides compatibility for projects that do not expect the language standard settings to be used automatically.
The OLD
behavior of this policy is to ignore language standard setting variables when generating the try_compile
test project. The NEW
behavior of this policy is to honor language standard setting variables.
This policy was introduced in CMake version 3.8. Unlike most policies, CMake version 3.19.0-rc3 does not warn by default when this policy is not set and simply uses OLD
behavior. See documentation of the CMAKE_POLICY_WARNING_CMP0067
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.
© 2000–2020 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.19/policy/CMP0067.html