mirror of
https://github.com/ceres-solver/ceres-solver.git
synced 2026-08-29 08:34:37 +08:00
Fixed SuiteSparse 6.0 version parsing
The version component macro names are delimited by multiple spaces in the new release resulting in a failure to parse the version. An additional guard ensures that if the version cannot be correctly parsed it is discarded and a user warning is issued. Fixes #919 Change-Id: I630f30dba0fd23979b6fe5d854e59701c22c3469
This commit is contained in:
committed by
Sameer Agarwal
parent
8fd7828e3d
commit
352b320ab1
+23
-13
@@ -404,26 +404,36 @@ if (TARGET SuiteSparse::Config)
|
|||||||
else (NOT EXISTS ${SuiteSparse_VERSION_FILE})
|
else (NOT EXISTS ${SuiteSparse_VERSION_FILE})
|
||||||
file(READ ${SuiteSparse_VERSION_FILE} Config_CONTENTS)
|
file(READ ${SuiteSparse_VERSION_FILE} Config_CONTENTS)
|
||||||
|
|
||||||
string(REGEX MATCH "#define SUITESPARSE_MAIN_VERSION [0-9]+"
|
string(REGEX MATCH "#define SUITESPARSE_MAIN_VERSION[ \t]+([0-9]+)"
|
||||||
SuiteSparse_VERSION_MAJOR "${Config_CONTENTS}")
|
SuiteSparse_VERSION_LINE "${Config_CONTENTS}")
|
||||||
string(REGEX REPLACE "#define SUITESPARSE_MAIN_VERSION ([0-9]+)" "\\1"
|
set (SuiteSparse_VERSION_MAJOR ${CMAKE_MATCH_1})
|
||||||
SuiteSparse_VERSION_MAJOR "${SuiteSparse_VERSION_MAJOR}")
|
|
||||||
|
|
||||||
string(REGEX MATCH "#define SUITESPARSE_SUB_VERSION [0-9]+"
|
string(REGEX MATCH "#define SUITESPARSE_SUB_VERSION[ \t]+([0-9]+)"
|
||||||
SuiteSparse_VERSION_MINOR "${Config_CONTENTS}")
|
SuiteSparse_VERSION_LINE "${Config_CONTENTS}")
|
||||||
string(REGEX REPLACE "#define SUITESPARSE_SUB_VERSION ([0-9]+)" "\\1"
|
set (SuiteSparse_VERSION_MINOR ${CMAKE_MATCH_1})
|
||||||
SuiteSparse_VERSION_MINOR "${SuiteSparse_VERSION_MINOR}")
|
|
||||||
|
|
||||||
string(REGEX MATCH "#define SUITESPARSE_SUBSUB_VERSION [0-9]+"
|
string(REGEX MATCH "#define SUITESPARSE_SUBSUB_VERSION[ \t]+([0-9]+)"
|
||||||
SuiteSparse_VERSION_PATCH "${Config_CONTENTS}")
|
SuiteSparse_VERSION_LINE "${Config_CONTENTS}")
|
||||||
string(REGEX REPLACE "#define SUITESPARSE_SUBSUB_VERSION ([0-9]+)" "\\1"
|
set (SuiteSparse_VERSION_PATCH ${CMAKE_MATCH_1})
|
||||||
SuiteSparse_VERSION_PATCH "${SuiteSparse_VERSION_PATCH}")
|
|
||||||
|
unset (SuiteSparse_VERSION_LINE)
|
||||||
|
|
||||||
# This is on a single line s/t CMake does not interpret it as a list of
|
# This is on a single line s/t CMake does not interpret it as a list of
|
||||||
# elements and insert ';' separators which would result in 4.;2.;1 nonsense.
|
# elements and insert ';' separators which would result in 4.;2.;1 nonsense.
|
||||||
set(SuiteSparse_VERSION
|
set(SuiteSparse_VERSION
|
||||||
"${SuiteSparse_VERSION_MAJOR}.${SuiteSparse_VERSION_MINOR}.${SuiteSparse_VERSION_PATCH}")
|
"${SuiteSparse_VERSION_MAJOR}.${SuiteSparse_VERSION_MINOR}.${SuiteSparse_VERSION_PATCH}")
|
||||||
set(SuiteSparse_VERSION_COMPONENTS 3)
|
|
||||||
|
if (SuiteSparse_VERSION MATCHES "[0-9]+\\.[0-9]+\\.[0-9]+")
|
||||||
|
set(SuiteSparse_VERSION_COMPONENTS 3)
|
||||||
|
else (SuiteSparse_VERSION MATCHES "[0-9]+\\.[0-9]+\\.[0-9]+")
|
||||||
|
message (WARNING "Could not parse SuiteSparse_config.h: SuiteSparse "
|
||||||
|
"version will not be available")
|
||||||
|
|
||||||
|
unset (SuiteSparse_VERSION)
|
||||||
|
unset (SuiteSparse_VERSION_MAJOR)
|
||||||
|
unset (SuiteSparse_VERSION_MINOR)
|
||||||
|
unset (SuiteSparse_VERSION_PATCH)
|
||||||
|
endif (SuiteSparse_VERSION MATCHES "[0-9]+\\.[0-9]+\\.[0-9]+")
|
||||||
endif (NOT EXISTS ${SuiteSparse_VERSION_FILE})
|
endif (NOT EXISTS ${SuiteSparse_VERSION_FILE})
|
||||||
endif (TARGET SuiteSparse::Config)
|
endif (TARGET SuiteSparse::Config)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user