mirror of
https://github.com/Kitware/CMake.git
synced 2026-02-22 06:59:01 -06:00
Merge topic 'fetchcontent-redirect-version-exact'
48b380c961 FetchContent: Ignore EXACT for redirected find_package() calls
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !7665
This commit is contained in:
@@ -303,13 +303,16 @@ Commands
|
||||
``<lowercaseName>-extra.cmake`` or ``<name>Extra.cmake`` file with the
|
||||
``OPTIONAL`` flag (so the files can be missing and won't generate a
|
||||
warning). Similarly, if no config version file exists, a very simple
|
||||
one will be written which sets ``PACKAGE_VERSION_COMPATIBLE`` to true.
|
||||
one will be written which sets ``PACKAGE_VERSION_COMPATIBLE`` and
|
||||
``PACKAGE_VERSION_EXACT`` to true. This ensures all future calls to
|
||||
:command:`find_package()` for the dependency will use the redirected
|
||||
config file, regardless of any version requirements.
|
||||
CMake cannot automatically determine an arbitrary dependency's version,
|
||||
so it cannot set ``PACKAGE_VERSION`` or ``PACKAGE_VERSION_EXACT``.
|
||||
so it cannot set ``PACKAGE_VERSION``.
|
||||
When a dependency is pulled in via :command:`add_subdirectory` in the
|
||||
next step, it may choose to overwrite the generated config version file
|
||||
in :variable:`CMAKE_FIND_PACKAGE_REDIRECTS_DIR` with one that also sets
|
||||
``PACKAGE_VERSION``, and if appropriate, ``PACKAGE_VERSION_EXACT``.
|
||||
``PACKAGE_VERSION``.
|
||||
The dependency may also write a ``<lowercaseName>-extra.cmake`` or
|
||||
``<name>Extra.cmake`` file to perform custom processing or define any
|
||||
variables that their normal (installed) package config file would
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
# Automatically generated by CMake's FetchContent module.
|
||||
# Do not edit this file, it will be regenerated every time CMake runs.
|
||||
|
||||
# Version not available, assuming it is compatible
|
||||
# Version not available, assuming it is compatible. We must also say it is an
|
||||
# exact match to ensure find_package() calls with the EXACT keyword still get
|
||||
# redirected.
|
||||
set(PACKAGE_VERSION_COMPATIBLE TRUE)
|
||||
set(PACKAGE_VERSION_EXACT TRUE)
|
||||
|
||||
@@ -18,3 +18,7 @@ message(STATUS "Lowercase extra file was read")
|
||||
|
||||
# This is expected to be re-routed to a FetchContent_MakeAvailable() call
|
||||
find_package(AddedProject REQUIRED)
|
||||
|
||||
# Verify that find_package() version constraints are fully ignored by the
|
||||
# default-generated config version file
|
||||
find_package(AddedProject 1.2.3 EXACT REQUIRED)
|
||||
|
||||
Reference in New Issue
Block a user