CMP0171
-------

.. versionadded:: 3.31

``codegen`` is a reserved target name.

CMake 3.30 and earlier did not reserve ``codegen`` as a builtin target name,
leaving projects free to create their own target with that name.
CMake 3.31 and later prefer to reserve ``codegen`` as a builtin target name
to drive custom commands created with the ``CODEGEN`` option to
:command:`add_custom_command`.  In order to support building the ``codegen``
target in scripted environments, e.g., ``cmake --build . --target codegen``,
the ``codegen`` target needs to be generated even if no custom commands
use the ``CODEGEN`` option.  This policy provides compatibility for projects
that have not been updated to avoid creating a target named ``codegen``.

The ``OLD`` behavior of this policy allows projects to create a target
with the name ``codegen``.  The ``NEW`` behavior halts with a fatal error
if a target with the name ``codegen`` is created.

.. |INTRODUCED_IN_CMAKE_VERSION| replace:: 3.31
.. |WARNS_OR_DOES_NOT_WARN| replace:: warns
.. include:: include/STANDARD_ADVICE.rst

.. include:: include/DEPRECATED.rst
