diff options
author | Brad King <brad.king@kitware.com> | 2014-07-09 16:54:22 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2014-07-09 16:57:19 (GMT) |
commit | cfab942e5ff8463f8053564e68179da110280b43 (patch) | |
tree | a61033e63680cf6a370f96bb5a27ba34ceab10ab | |
parent | 55d3e88fb7eb5cfdb58c5617133dfaf70d3b0547 (diff) | |
download | CMake-cfab942e5ff8463f8053564e68179da110280b43.zip CMake-cfab942e5ff8463f8053564e68179da110280b43.tar.gz CMake-cfab942e5ff8463f8053564e68179da110280b43.tar.bz2 |
Help: Update cmake-packages.7 examples to import targets only once
Package configuration files should load their targets files at most once
in a given scope. Update our ClimbingStats example to show how to do
this.
-rw-r--r-- | Help/manual/cmake-packages.7.rst | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/Help/manual/cmake-packages.7.rst b/Help/manual/cmake-packages.7.rst index c4cca6d..5badd48 100644 --- a/Help/manual/cmake-packages.7.rst +++ b/Help/manual/cmake-packages.7.rst @@ -385,9 +385,12 @@ In this case, the ``ClimbingStatsConfig.cmake`` file could be as simple as: .. code-block:: cmake - include("${CMAKE_CURRENT_LIST_DIR}/ClimbingStatsTargets.cmake") + if(NOT TARGET Upstream::ClimbingStats) + include("${CMAKE_CURRENT_LIST_DIR}/ClimbingStatsTargets.cmake") + endif() -As this allows downstreams to use the ``IMPORTED`` targets. If any macros +This allows downstreams to use the ``IMPORTED`` targets, and guards +against importing the targets more than once. If any macros 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. @@ -454,7 +457,9 @@ dependencies of a package should be found in the ``Config.cmake`` file: include(CMakeFindDependencyMacro) find_dependency(Stats 2.6.4) - include("${CMAKE_CURRENT_LIST_DIR}/ClimbingStatsTargets.cmake") + if(NOT TARGET Upstream::ClimbingStats) + include("${CMAKE_CURRENT_LIST_DIR}/ClimbingStatsTargets.cmake") + endif() include("${CMAKE_CURRENT_LIST_DIR}/ClimbingStatsMacros.cmake") The ``find_dependency`` macro also sets ``ClimbingStats_FOUND`` to ``False`` if @@ -471,7 +476,9 @@ be true. This can be tested with logic in the package configuration file: include(CMakeFindDependencyMacro) find_dependency(Stats 2.6.4) - include("${CMAKE_CURRENT_LIST_DIR}/ClimbingStatsTargets.cmake") + if(NOT TARGET Upstream::ClimbingStats) + include("${CMAKE_CURRENT_LIST_DIR}/ClimbingStatsTargets.cmake") + endif() include("${CMAKE_CURRENT_LIST_DIR}/ClimbingStatsMacros.cmake") set(_supported_components Plot Table) |