diff options
author | Brad King <brad.king@kitware.com> | 2016-12-01 20:46:34 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2016-12-06 13:58:42 (GMT) |
commit | f72ba42b7c643b1b217d1b8f6684cec3289e7201 (patch) | |
tree | 7277ccca7c933e26b2cfc4aba2401477d7125408 /Help/policy/CMP0067.rst | |
parent | 45aa03b97aeeb512264ac2bfbb2028330be254d1 (diff) | |
download | CMake-f72ba42b7c643b1b217d1b8f6684cec3289e7201.zip CMake-f72ba42b7c643b1b217d1b8f6684cec3289e7201.tar.gz CMake-f72ba42b7c643b1b217d1b8f6684cec3289e7201.tar.bz2 |
try_compile: Add policy CMP0067 to honor language standards
Projects use `try_compile` to check if they will be able to compile some
particular source code. When a language standard variable like
`CMAKE_CXX_STANDARD` is set, then the project intends to compile source
code using a compiler mode for that standard. Therefore it makes sense
for `try_compile` to use that standard in the test project too.
Unfortunately this was not done when support for the
`CMAKE_CXX_STANDARD` variable was first implemented. Add a policy to
introduce the improved behavior in a compatible way.
Closes: #16456
Diffstat (limited to 'Help/policy/CMP0067.rst')
-rw-r--r-- | Help/policy/CMP0067.rst | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/Help/policy/CMP0067.rst b/Help/policy/CMP0067.rst new file mode 100644 index 0000000..d52ba7f --- /dev/null +++ b/Help/policy/CMP0067.rst @@ -0,0 +1,34 @@ +CMP0067 +------- + +Honor language standard in :command:`try_compile` source-file signature. + +The :command:`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`` and ``CXX`` (C++) using the values of the variables: + +* :variable:`CMAKE_C_STANDARD` +* :variable:`CMAKE_C_STANDARD_REQUIRED` +* :variable:`CMAKE_C_EXTENSIONS` +* :variable:`CMAKE_CXX_STANDARD` +* :variable:`CMAKE_CXX_STANDARD_REQUIRED` +* :variable:`CMAKE_CXX_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 |release| does *not* warn by default when this policy +is not set and simply uses OLD behavior. See documentation of the +:variable:`CMAKE_POLICY_WARNING_CMP0067 <CMAKE_POLICY_WARNING_CMP<NNNN>>` +variable to control the warning. + +.. include:: DEPRECATED.txt |