Merge topic 'LINK_DEPENDS'

724bd7790e LINK_DEPENDS: add support of 'generator expressions'
cc9f88af53 LINK_DEPENDS: add support for property INTERFACE_LINK_DEPENDS

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2175
This commit is contained in:
Brad King
2018-07-03 14:52:05 +00:00
committed by Kitware Robot
23 changed files with 212 additions and 43 deletions

View File

@@ -198,6 +198,7 @@ Properties on Targets
/prop_tgt/IMPORTED_LIBNAME_CONFIG
/prop_tgt/IMPORTED_LIBNAME
/prop_tgt/IMPORTED_LINK_DEPENDENT_LIBRARIES_CONFIG
/prop_tgt/IMPORTED_LINK_DEPENDENT_LIBRARIES_CONFIG
/prop_tgt/IMPORTED_LINK_DEPENDENT_LIBRARIES
/prop_tgt/IMPORTED_LINK_INTERFACE_LANGUAGES_CONFIG
/prop_tgt/IMPORTED_LINK_INTERFACE_LANGUAGES
@@ -225,6 +226,7 @@ Properties on Targets
/prop_tgt/INTERFACE_COMPILE_FEATURES
/prop_tgt/INTERFACE_COMPILE_OPTIONS
/prop_tgt/INTERFACE_INCLUDE_DIRECTORIES
/prop_tgt/INTERFACE_LINK_DEPENDS
/prop_tgt/INTERFACE_LINK_LIBRARIES
/prop_tgt/INTERFACE_LINK_OPTIONS
/prop_tgt/INTERFACE_POSITION_INDEPENDENT_CODE

View File

@@ -0,0 +1,31 @@
INTERFACE_LINK_DEPENDS
----------------------
Additional public interface files on which a target binary depends for linking.
This property is supported only by Makefile and Ninja generators. It is
intended to specify dependencies on "linker scripts" for custom Makefile link
rules.
When target dependencies are specified using :command:`target_link_libraries`,
CMake will read this property from all target dependencies to determine the
build properties of the consumer.
Contents of ``INTERFACE_LINK_DEPENDS`` may use "generator expressions"
with the syntax ``$<...>``. See the :manual:`cmake-generator-expressions(7)`
manual for available expressions. See the :manual:`cmake-buildsystem(7)`
-manual for more on defining buildsystem properties.
Link dependency files usage requirements commonly differ between the build-tree
and the install-tree. The ``BUILD_INTERFACE`` and ``INSTALL_INTERFACE``
generator expressions can be used to describe separate usage requirements
based on the usage location. Relative paths are allowed within the
``INSTALL_INTERFACE`` expression and are interpreted relative to the
installation prefix. For example:
.. code-block:: cmake
set_property(TARGET mylib PROPERTY INTERFACE_LINK_DEPENDS
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/mylinkscript>
$<INSTALL_INTERFACE:mylinkscript> # <prefix>/mylinkscript
)

View File

@@ -7,6 +7,11 @@ Specifies a semicolon-separated list of full-paths to files on which
the link rule for this target depends. The target binary will be
linked if any of the named files is newer than it.
This property is ignored by non-Makefile generators. It is intended
to specify dependencies on "linker scripts" for custom Makefile link
This property is supported only by Makefile and Ninja generators. It is
intended to specify dependencies on "linker scripts" for custom Makefile link
rules.
Contents of ``LINK_DEPENDS`` may use "generator expressions" with
the syntax ``$<...>``. See the :manual:`cmake-generator-expressions(7)`
manual for available expressions. See the :manual:`cmake-buildsystem(7)`
manual for more on defining buildsystem properties.

View File

@@ -0,0 +1,4 @@
INTERFACE_LINK_DEPENDS-property
-------------------------------
* Binary targets gained new :prop_tgt:`INTERFACE_LINK_DEPENDS` property.

View File

@@ -0,0 +1,5 @@
LINK_DEPENDS-property
---------------------
* The :prop_tgt:`LINK_DEPENDS` target property learned to support
:manual:`generator expressions <cmake-generator-expressions(7)>`.