cmake/Help/policy/CMP0028.rst

26 lines
1.2 KiB
ReStructuredText
Raw Normal View History

2014-08-03 19:52:23 +02:00
CMP0028
-------
2019-11-11 23:01:05 +01:00
Double colon in target name means ``ALIAS`` or ``IMPORTED`` target.
2014-08-03 19:52:23 +02:00
CMake 2.8.12 and lower allowed the use of targets and files with double
2019-11-11 23:01:05 +01:00
colons in :command:`target_link_libraries`, with some buildsystem generators.
2014-08-03 19:52:23 +02:00
2019-11-11 23:01:05 +01:00
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
2014-08-03 19:52:23 +02:00
messages if there is a typo in what should be a target name.
2019-11-11 23:01:05 +01:00
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.
2014-08-03 19:52:23 +02:00
This policy was introduced in CMake version 3.0. CMake version
2019-11-11 23:01:05 +01:00
|release| warns when the policy is not set and uses ``OLD`` behavior. Use
the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
2015-08-17 11:37:30 +02:00
.. include:: DEPRECATED.txt