summaryrefslogtreecommitdiffstats
path: root/Help
diff options
context:
space:
mode:
authorStephen Kelly <steveire@gmail.com>2014-01-07 17:15:27 (GMT)
committerStephen Kelly <steveire@gmail.com>2014-01-09 18:45:08 (GMT)
commitbb8bde35b8eb75d0edb8bc2812ddc22bdc61fd58 (patch)
tree0e1b4d85a0975a12c0bd4c404b1a64ba743ae9a1 /Help
parentbeb9cfae1798ef3e25be8d1cec7ce9ae33abec7b (diff)
downloadCMake-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.rst38
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.