cmake --trace-expand should expand conditions
I currently tried to debug why find_package(GDAL 3.0...3.6 CONFIG)
doesn't accept GDAL 3.5.
Sadly --trace-expand
seems to expand only variables in brackets - which are not needed in conditions.
So following code (just added line hints for the trace below):
if(PACKAGE_FIND_VERSION_RANGE) # Line 34
# both endpoints of the range must have the expected major and minor versions
math (EXPR CVF_VERSION_MINOR_NEXT "${CVF_VERSION_MINOR} + 1") # Line 36
if (NOT (PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR # Line 37
AND PACKAGE_FIND_VERSION_MIN_MINOR STREQUAL CVF_VERSION_MINOR)
OR ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE"
AND NOT (PACKAGE_FIND_VERSION_MAX_MAJOR STREQUAL CVF_VERSION_MAJOR
AND PACKAGE_FIND_VERSION_MAX_MINOR STREQUAL CVF_VERSION_MINOR))
OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE"
AND NOT PACKAGE_FIND_VERSION_MAX VERSION_LESS_EQUAL ${CVF_VERSION_MAJOR}.${CVF_VERSION_MINOR_NEXT})))
set(PACKAGE_VERSION_COMPATIBLE FALSE) # Line 44
elseif(PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR
AND PACKAGE_FIND_VERSION_MIN_MINOR STREQUAL CVF_VERSION_MINOR
AND ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_LESS_EQUAL PACKAGE_FIND_VERSION_MAX)
OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION_MAX)))
set(PACKAGE_VERSION_COMPATIBLE TRUE)
else()
set(PACKAGE_VERSION_COMPATIBLE FALSE)
endif()
else()
...
is only expanded to:
D:/gdal/install/lib/cmake/gdal/GDALConfigVersion.cmake(34): if(PACKAGE_FIND_VERSION_RANGE )
D:/gdal/install/lib/cmake/gdal/GDALConfigVersion.cmake(36): math(EXPR CVF_VERSION_MINOR_NEXT 5 + 1 )
D:/gdal/install/lib/cmake/gdal/GDALConfigVersion.cmake(37): if(NOT ( PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR AND PACKAGE_FIND_VERSION_MIN_MINOR STREQUAL CVF_VERSION_MINOR ) OR ( ( PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL INCLUDE AND NOT ( PACKAGE_FIND_VERSION_MAX_MAJOR STREQUAL CVF_VERSION_MAJOR AND PACKAGE_FIND_VERSION_MAX_MINOR STREQUAL CVF_VERSION_MINOR ) ) OR ( PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL EXCLUDE AND NOT PACKAGE_FIND_VERSION_MAX VERSION_LESS_EQUAL 3.6 ) ) )
D:/gdal/install/lib/cmake/gdal/GDALConfigVersion.cmake(44): set(PACKAGE_VERSION_COMPATIBLE FALSE )
This just doesn't help much, as I still don't know the content of the variables. I would had expected a trace like:
D:/gdal/install/lib/cmake/gdal/GDALConfigVersion.cmake(34): if("3.0...3.6" )
D:/gdal/install/lib/cmake/gdal/GDALConfigVersion.cmake(36): math(EXPR CVF_VERSION_MINOR_NEXT 5 + 1 )
D:/gdal/install/lib/cmake/gdal/GDALConfigVersion.cmake(37): if(NOT ( "3" STREQUAL "3" AND "0" STREQUAL "5" ) OR ( ( "INCLUDE" STREQUAL INCLUDE AND NOT ( "3" STREQUAL "3" AND "0" STREQUAL "5" ) ) OR ( "INCLUDE" STREQUAL EXCLUDE AND NOT "3.6" VERSION_LESS_EQUAL 3.6 ) ) )
D:/gdal/install/lib/cmake/gdal/GDALConfigVersion.cmake(44): set(PACKAGE_VERSION_COMPATIBLE FALSE )
The current output is more like my expectation for --trace
(without expand
)
Edited by SunBlack