summaryrefslogtreecommitdiffstats
path: root/Modules/CMakePackageConfigHelpers.cmake
diff options
context:
space:
mode:
authorJustin Bassett <jbassett271@gmail.com>2018-11-26 07:40:36 (GMT)
committerJustin Bassett <jbassett271@gmail.com>2018-12-01 06:52:40 (GMT)
commiteb973f935f25f5bafdb8d55360a1b122e9dabfa5 (patch)
treef7d7ad0665c8ea0e04efe8a7b7d782beabad60d7 /Modules/CMakePackageConfigHelpers.cmake
parent6786345210994063030ad82f7ece66a461bbfb76 (diff)
downloadCMake-eb973f935f25f5bafdb8d55360a1b122e9dabfa5.zip
CMake-eb973f935f25f5bafdb8d55360a1b122e9dabfa5.tar.gz
CMake-eb973f935f25f5bafdb8d55360a1b122e9dabfa5.tar.bz2
CMakePackageConfigHelpers: Add ARCH_INDEPENDENT option
Allow skipping the architecture check in the package version file generated from calling write_basic_package_version_file. Document said architecture check. Fixes: #16184
Diffstat (limited to 'Modules/CMakePackageConfigHelpers.cmake')
-rw-r--r--Modules/CMakePackageConfigHelpers.cmake15
1 files changed, 14 insertions, 1 deletions
diff --git a/Modules/CMakePackageConfigHelpers.cmake b/Modules/CMakePackageConfigHelpers.cmake
index bcc9bf8..22fc953 100644
--- a/Modules/CMakePackageConfigHelpers.cmake
+++ b/Modules/CMakePackageConfigHelpers.cmake
@@ -124,7 +124,8 @@ Generating a Package Version File
write_basic_package_version_file(<filename>
[VERSION <major.minor.patch>]
- COMPATIBILITY <AnyNewerVersion|SameMajorVersion|SameMinorVersion|ExactVersion> )
+ COMPATIBILITY <AnyNewerVersion|SameMajorVersion|SameMinorVersion|ExactVersion>
+ [ARCH_INDEPENDENT] )
Writes a file for use as ``<PackageName>ConfigVersion.cmake`` file to
@@ -158,6 +159,18 @@ If your project has more elaborated version matching rules, you will need to
write your own custom ``ConfigVersion.cmake`` file instead of using this
macro.
+If ``ARCH_INDEPENDENT`` is given, the installed package version will be
+considered compatible even if it was built for a different architecture than
+the requested architecture. Otherwise, an architecture check will be performed,
+and the package will be considered compatible only if the architecture matches
+exactly. For example, if the package is built for a 32-bit architecture, the
+package is only considered compatible if it is used on a 32-bit architecture,
+unless ``ARCH_INDEPENDENT`` is given, in which case the package is considered
+compatible on any architecture.
+
+.. note:: ``ARCH_INDEPENDENT`` is intended for header-only libraries or similar
+ packages with no binaries.
+
Internally, this macro executes :command:`configure_file()` to create the
resulting version file. Depending on the ``COMPATIBILITY``, the corresponding
``BasicConfigVersion-<COMPATIBILITY>.cmake.in`` file is used.