diff options
author | Brad King <brad.king@kitware.com> | 2022-06-11 10:13:51 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2022-06-11 10:13:58 (GMT) |
commit | 9f16821ea55df68fb58599f2b7bd38427f68c86c (patch) | |
tree | b2fc0fd0213dde026f969051eae920515ca5d503 /Modules | |
parent | 4a5b4f041e6da97b7d4e847b478ebfd3e63b89b5 (diff) | |
parent | f19b48e0b89d5854e4a7a8fbbccadb38c02dcd76 (diff) | |
download | CMake-9f16821ea55df68fb58599f2b7bd38427f68c86c.zip CMake-9f16821ea55df68fb58599f2b7bd38427f68c86c.tar.gz CMake-9f16821ea55df68fb58599f2b7bd38427f68c86c.tar.bz2 |
Merge topic 'fetchcontent-global-targets'
f19b48e0b8 FetchContent: Honor CMAKE_FIND_PACKAGE_TARGETS_GLOBAL
1305bade56 Help: Add missing version directive for find_package() GLOBAL keyword
Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !7347
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/FetchContent.cmake | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/Modules/FetchContent.cmake b/Modules/FetchContent.cmake index 75a161a..d0a90f4 100644 --- a/Modules/FetchContent.cmake +++ b/Modules/FetchContent.cmake @@ -195,7 +195,14 @@ Commands Everything after the ``FIND_PACKAGE_ARGS`` keyword is appended to the :command:`find_package` call, so all other ``<contentOptions>`` must - come before the ``FIND_PACKAGE_ARGS`` keyword. + come before the ``FIND_PACKAGE_ARGS`` keyword. If the + :variable:`CMAKE_FIND_PACKAGE_TARGETS_GLOBAL` variable is set to true + at the time ``FetchContent_Declare()`` is called, a ``GLOBAL`` keyword + will be appended to the :command:`find_package` arguments if it was + not already specified. It will also be appended if + ``FIND_PACKAGE_ARGS`` was not given, but + :variable:`FETCHCONTENT_TRY_FIND_PACKAGE_MODE` was set to ``ALWAYS``. + ``OVERRIDE_FIND_PACKAGE`` cannot be used when ``FIND_PACKAGE_ARGS`` is given. @@ -260,6 +267,11 @@ Commands The value of the :variable:`FETCHCONTENT_TRY_FIND_PACKAGE_MODE` variable at the time :command:`FetchContent_Declare` was called determines whether ``FetchContent_MakeAvailable()`` can call :command:`find_package`. + If the :variable:`CMAKE_FIND_PACKAGE_TARGETS_GLOBAL` variable is set to + true when ``FetchContent_MakeAvailable()`` is called, it still affects + any imported targets created when that in turn calls + :command:`find_package`, even if that variable was false when the + corresponding details were declared. If the dependency was not satisfied by a provider or a :command:`find_package` call, ``FetchContent_MakeAvailable()`` then uses @@ -1078,10 +1090,17 @@ function(__FetchContent_declareDetails contentName) set(__cmdArgs) set(__findPackageArgs) + set(__sawQuietKeyword NO) + set(__sawGlobalKeyword NO) foreach(__item IN LISTS ARGN) if(DEFINED __findPackageArgs) # All remaining args are for find_package() string(APPEND __findPackageArgs " [==[${__item}]==]") + if(__item STREQUAL "QUIET") + set(__sawQuietKeyword YES) + elseif(__item STREQUAL "GLOBAL") + set(__sawGlobalKeyword YES) + endif() continue() endif() @@ -1120,9 +1139,12 @@ function(__FetchContent_declareDetails contentName) if(__tryFindPackage AND __tryFindPackageAllowed) set(propertyName "_FetchContent_${contentNameLower}_find_package_args") define_property(GLOBAL PROPERTY ${propertyName}) - if(NOT QUIET IN_LIST __findPackageArgs) + if(NOT __sawQuietKeyword) list(INSERT __findPackageArgs 0 QUIET) endif() + if(CMAKE_FIND_PACKAGE_TARGETS_GLOBAL AND NOT __sawGlobalKeyword) + list(APPEND __findPackageArgs GLOBAL) + endif() cmake_language(EVAL CODE "set_property(GLOBAL PROPERTY ${propertyName} ${__findPackageArgs})" ) |