CMP0171 — CMake 4.3.1 Documentation

# CMP0171

Added in version 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 `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.

This policy was introduced in CMake version 3.31. It may be set by `cmake_policy()` or `cmake_minimum_required()`. If it is not set, CMake warns, and uses `OLD` behavior.

Note

The `OLD` behavior of a policy is deprecated by definition and may be removed in a future version of CMake.