Back to Cmake

CMP0067

Help/policy/CMP0067.rst

4.3.21.5 KB
Original Source

CMP0067

.. versionadded:: 3.8

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, CXX (C++), and CUDA 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
  • :variable:CMAKE_CUDA_STANDARD
  • :variable:CMAKE_CUDA_STANDARD_REQUIRED
  • :variable: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.

.. |INTRODUCED_IN_CMAKE_VERSION| replace:: 3.8 .. |WARNS_OR_DOES_NOT_WARN| replace:: does not warn by default .. include:: include/STANDARD_ADVICE.rst

See documentation of the :variable:CMAKE_POLICY_WARNING_CMP0067 <CMAKE_POLICY_WARNING_CMP<NNNN>> variable to control the warning.

.. include:: include/DEPRECATED.rst