CMP0028 — CMake 4.3.0 Documentation

# CMP0028

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()`.

Double colon in target name means `ALIAS` or `IMPORTED` target.

CMake 2.8.12 and lower allowed the use of targets and files with double colons in `target_link_libraries()`, with some buildsystem generators.

The use of double-colons is a common pattern used to namespace `IMPORTED` targets and `ALIAS` targets. When computing the link dependencies of a target, the name of each dependency could either be a target, or a file on disk. Previously, if a target was not found with a matching name, the name was considered to refer to a file on disk. This can lead to confusing error messages if there is a typo in what should be a target name.

See also the `LINK_LIBRARIES_ONLY_TARGETS` target property.

The `OLD` behavior for this policy is to search for targets, then files on disk, even if the search term contains double-colons. The `NEW` behavior for this policy is to issue a `FATAL_ERROR` if a link dependency contains double-colons but is not an `IMPORTED` target or an `ALIAS` target.

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.