CMake/Help/manual/cmake-policies.7.rst
Brad King 7e142c5ac2 project: Manage VERSION variables
Teach the project() command to set variables

  {PROJECT,<PROJECT-NAME>}_VERSION{,_MAJOR,_MINOR,_PATCH,_TWEAK}

holding the project version number and its components.  Add project()
command option "VERSION" to specify the version explicitly, and default
to the empty string when it is not given.

Since this clears variables when no VERSION is given, this may change
behavior for existing projects that set the version variables themselves
prior to calling project().  Add policy CMP0048 for compatibility.

Suggested-by: Alex Neundorf <neundorf@kde.org>
2014-01-29 09:45:18 -05:00

103 lines
2.8 KiB
ReStructuredText

.. cmake-manual-description: CMake Policies Reference
cmake-policies(7)
*****************
.. only:: html or latex
.. contents::
Introduction
============
Policies in CMake are used to preserve backward compatible behavior
across multiple releases. When a new policy is introduced, newer CMake
versions will begin to warn about the backward compatible behavior. It
is possible to disable the warning by explicitly requesting the OLD, or
backward compatible behavior using the :command:`cmake_policy` command.
It is also possible to request NEW, or non-backward compatible behavior
for a policy, also avoiding the warning. Each policy can also be set to
either NEW or OLD behavior explicitly on the command line with the
:variable:`CMAKE_POLICY_DEFAULT_CMP<NNNN>` variable.
The :command:`cmake_minimum_required` command does more than report an
error if a too-old version of CMake is used to build a project. It
also sets all policies introduced in that CMake version or earlier to
NEW behavior. To manage policies without increasing the minimum required
CMake version, the :command:`if(POLICY)` command may be used:
.. code-block:: cmake
if(POLICY CMP0990)
cmake_policy(SET CMP0990 NEW)
endif()
This has the effect of using the NEW behavior with newer CMake releases which
users may be using and not issuing a compatibility warning.
The setting of a policy is confined in some cases to not propagate to the
parent scope. For example, if the files read by the :command:`include` command
or the :command:`find_package` command contain a use of :command:`cmake_policy`,
that policy setting will not affect the caller by default. Both commands accept
an optional ``NO_POLICY_SCOPE`` keyword to control this behavior.
The :variable:`CMAKE_MINIMUM_REQUIRED_VERSION` variable may also be used
to determine whether to report an error on use of deprecated macros or
functions.
All Policies
============
.. toctree::
:maxdepth: 1
/policy/CMP0000
/policy/CMP0001
/policy/CMP0002
/policy/CMP0003
/policy/CMP0004
/policy/CMP0005
/policy/CMP0006
/policy/CMP0007
/policy/CMP0008
/policy/CMP0009
/policy/CMP0010
/policy/CMP0011
/policy/CMP0012
/policy/CMP0013
/policy/CMP0014
/policy/CMP0015
/policy/CMP0016
/policy/CMP0017
/policy/CMP0018
/policy/CMP0019
/policy/CMP0020
/policy/CMP0021
/policy/CMP0022
/policy/CMP0023
/policy/CMP0024
/policy/CMP0025
/policy/CMP0026
/policy/CMP0027
/policy/CMP0028
/policy/CMP0029
/policy/CMP0030
/policy/CMP0031
/policy/CMP0032
/policy/CMP0033
/policy/CMP0034
/policy/CMP0035
/policy/CMP0036
/policy/CMP0037
/policy/CMP0038
/policy/CMP0039
/policy/CMP0040
/policy/CMP0041
/policy/CMP0042
/policy/CMP0043
/policy/CMP0044
/policy/CMP0045
/policy/CMP0046
/policy/CMP0047
/policy/CMP0048