diff options
author | Stephen Kelly <steveire@gmail.com> | 2014-01-07 17:15:27 (GMT) |
---|---|---|
committer | Stephen Kelly <steveire@gmail.com> | 2014-01-09 18:45:08 (GMT) |
commit | bb8bde35b8eb75d0edb8bc2812ddc22bdc61fd58 (patch) | |
tree | 0e1b4d85a0975a12c0bd4c404b1a64ba743ae9a1 /Help | |
parent | beb9cfae1798ef3e25be8d1cec7ce9ae33abec7b (diff) | |
download | CMake-bb8bde35b8eb75d0edb8bc2812ddc22bdc61fd58.zip CMake-bb8bde35b8eb75d0edb8bc2812ddc22bdc61fd58.tar.gz CMake-bb8bde35b8eb75d0edb8bc2812ddc22bdc61fd58.tar.bz2 |
Help: Add notes about relocatability of config-file packages.
Diffstat (limited to 'Help')
-rw-r--r-- | Help/manual/cmake-packages.7.rst | 38 |
1 files changed, 34 insertions, 4 deletions
diff --git a/Help/manual/cmake-packages.7.rst b/Help/manual/cmake-packages.7.rst index b572bf7..e87eb83 100644 --- a/Help/manual/cmake-packages.7.rst +++ b/Help/manual/cmake-packages.7.rst @@ -392,11 +392,41 @@ should be provided by the ``ClimbingStats`` package, they should be in a separate file which is installed to the same location as the ``ClimbingStatsConfig.cmake`` file, and included from there. +Packages created by :command:`install(EXPORT)` are designed to be relocatable, +using paths relative to the location of the package itself. When defining +the interface of a target for ``EXPORT``, keep in mind that the include +directories should be specified as relative paths which are relative to the +:variable:`CMAKE_INSTALL_PREFIX`: + +.. code-block:: cmake + + target_include_directories(tgt INTERFACE + # Wrong, not relocatable: + $<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/include/TgtName> + ) + + target_include_directories(tgt INTERFACE + # Ok, relocatable: + $<INSTALL_INTERFACE:include/TgtName> + ) + +The ``$<INSTALL_PREFIX>`` +:manual:`generator expression <cmake-generator-expressions(7)>` may be used as +a placeholder for the install prefix without resulting in a non-relocatable +package. This is necessary if complex generator expressions are used: + +.. code-block:: cmake + + target_include_directories(tgt INTERFACE + # Ok, relocatable: + $<INSTALL_INTERFACE:$<$<CONFIG:Debug>:$<INSTALL_PREFIX>/include/TgtName>> + ) + The :command:`export(EXPORT)` command creates an :prop_tgt:`IMPORTED` targets -definition file which is specific to the build-tree. This can similiarly be -used with a suitable package configuration file and package version file to -define a package for the build tree which may be used without installation. -Consumers of the build tree can simply ensure that the +definition file which is specific to the build-tree, and is not relocatable. +This can similiarly be used with a suitable package configuration file and +package version file to define a package for the build tree which may be used +without installation. Consumers of the build tree can simply ensure that the :variable:`CMAKE_PREFIX_PATH` contains the build directory, or set the ``ClimbingStats_DIR`` to ``<build_dir>/ClimbingStats`` in the cache. |