CMP0037 — CMake 4.3.0 Documentation

# CMP0037

Warning

The `OLD` behavior of this policy was removed in CMake version 4.0. This policy must be set to `NEW` by a call to `cmake_minimum_required()` or `cmake_policy()`.

Target names should not be reserved and should match a validity pattern.

CMake 2.8.12 and lower allowed creating targets using `add_library()`, `add_executable()` and `add_custom_target()` with unrestricted choice for the target name. Newer cmake features such as `cmake-generator-expressions(7)` and some diagnostics expect target names to match a restricted pattern.

Target names may contain upper and lower case letters, numbers, the underscore character (`_`), dot(`.`), plus(`+`) and minus(`-`). As a special case, `ALIAS` and `IMPORTED` targets may contain two consecutive colons.

Target names reserved by one or more CMake generators are not allowed. Among others these include `all`, `clean`, `help`, and `install`.

Target names associated with optional features, such as `test` and `package`, may also be reserved. CMake 3.10 and below always reserve them. CMake 3.11 and above reserve them only when the corresponding feature is enabled (e.g. by including the `CTest` or `CPack` modules).

The `OLD` behavior for this policy is to allow creating targets with reserved names or which do not match the validity pattern. The `NEW` behavior for this policy is to report an error if an add_* command is used with an invalid target name.

This policy was introduced in CMake version 3.0. Prior to removal in CMake version 4.0, it could be set by `cmake_policy()` or `cmake_minimum_required()`. If it was not set, CMake warned, and used `OLD` behavior.