Today I fought a little war with CMake. I wanted to check whether the version of a package is valid, using the VERSION_LESS
comparison in the CMAKE IF
-command.
if(Foo_FIND_VERSION_EXACT AND (NOT Foo_VERSION VERSION_EQUAL Foo_FIND_VERSION))
message(FATAL_ERROR "Need exact version..")
else(Foo_VERSION VERSION_LESS Foo_FIND_VERSION)
message(FATAL_ERROR "Need at least version..")
endif()
Note the problem? It took me half an hour and lots of cursing..
The above is accepted by CMake, but if fails with a FATAL_ERROR
with message ‘Need at least version..’.
The issue? It should be ELSEIF
and not ELSE
.
if(Foo_FIND_VERSION_EXACT AND (NOT Foo_VERSION VERSION_EQUAL Foo_FIND_VERSION))
message(FATAL_ERROR "Need exact version..")
elseif(Foo_VERSION VERSION_LESS Foo_FIND_VERSION)
message(FATAL_ERROR "Need at least version..")
endif()
Loving CMake, but that was …