CMakePackageConfigHelpers: add more version compatibility modes

Add `SamePatchVersion`, `SameFullVersion`, and `SemanticVersion`
support.

Document `ExactVersion` as deprecated in favor of the clearer
`SamePatchVersion`/`SameFullVersion` names.

Closes: #18060
This commit is contained in:
Daniele E. Domenichelli
2026-05-15 13:51:11 -04:00
committed by Brad King
parent 92ab54ae3b
commit 9bd3346655
11 changed files with 1869 additions and 1534 deletions
+9 -2
View File
@@ -14,7 +14,9 @@ WriteBasicConfigVersionFile
WRITE_BASIC_CONFIG_VERSION_FILE(filename
[VERSION major.minor.patch]
COMPATIBILITY (AnyNewerVersion|SameMajorVersion|SameMinorVersion|ExactVersion)
COMPATIBILITY (AnyNewerVersion|SameMajorVersion|SameMinorVersion|
SamePatchVersion|SameFullVersion|ExactVersion|
SemanticVersion)
[ARCH_INDEPENDENT]
)
@@ -33,7 +35,12 @@ function(WRITE_BASIC_CONFIG_VERSION_FILE _filename)
message(FATAL_ERROR "Unknown keywords given to WRITE_BASIC_CONFIG_VERSION_FILE(): \"${CVF_UNPARSED_ARGUMENTS}\"")
endif()
set(versionTemplateFile "${CMAKE_ROOT}/Modules/BasicConfigVersion-${CVF_COMPATIBILITY}.cmake.in")
set(_compatibilityTemplate "${CVF_COMPATIBILITY}")
if(CVF_COMPATIBILITY STREQUAL "ExactVersion")
set(_compatibilityTemplate "SamePatchVersion")
endif()
set(versionTemplateFile "${CMAKE_ROOT}/Modules/BasicConfigVersion-${_compatibilityTemplate}.cmake.in")
if(NOT EXISTS "${versionTemplateFile}")
message(FATAL_ERROR "Bad COMPATIBILITY value used for WRITE_BASIC_CONFIG_VERSION_FILE(): \"${CVF_COMPATIBILITY}\"")
endif()