# CMP0028

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. CMake version 3.27.5 warns when the policy is not set and uses `OLD` behavior. Use the `cmake_policy()` command to set it to `OLD` or `NEW` explicitly.

Note

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