@@ -31,6 +31,38 @@ FUNCTION(set_using_dynamic_name VAR_NAME VALUE)
31
31
SET ( "${VAR_NAME} " "${VALUE} " PARENT_SCOPE)
32
32
ENDFUNCTION (set_using_dynamic_name)
33
33
34
+ # Extract major, minor, patch and qualifier from version text
35
+ # Parse a version string "X.Y.Z[-qualifier]" and outputs
36
+ # version parts in ${OUPUT_PREFIX}_MAJOR, _MINOR, _PATCH, _QUALIFIER.
37
+ # If parse succed then ${OUPUT_PREFIX}_FOUND is TRUE.
38
+ MACRO (jsoncpp_parse_version VERSION_TEXT OUPUT_PREFIX)
39
+ SET (VERSION_REGEX "[0-9]+\\ .[0-9]+\\ .[0-9]+(-[a-zA-Z0-9_]+)?" )
40
+ IF ( ${VERSION_TEXT} MATCHES ${VERSION_REGEX} )
41
+ STRING (REGEX MATCHALL "[0-9]+|-([A-Za-z0-9_]+)" VERSION_PARTS ${VERSION_TEXT} )
42
+ list (APPEND VERSION_PARTS "" ) # empty qualifier to handle no qualifier case
43
+ LIST (GET VERSION_PARTS 0 ${OUPUT_PREFIX} _MAJOR)
44
+ LIST (GET VERSION_PARTS 1 ${OUPUT_PREFIX} _MINOR)
45
+ LIST (GET VERSION_PARTS 2 ${OUPUT_PREFIX} _PATCH)
46
+ LIST (GET VERSION_PARTS 3 ${OUPUT_PREFIX} _QUALIFIER)
47
+ set_using_dynamic_name( "${OUPUT_PREFIX} _FOUND" TRUE )
48
+ ELSE ( ${VERSION_TEXT} MATCHES ${VERSION_REGEX} )
49
+ set_using_dynamic_name( "${OUPUT_PREFIX} _FOUND" FALSE )
50
+ ENDIF ( ${VERSION_TEXT} MATCHES ${VERSION_REGEX} )
51
+ ENDMACRO (jsoncpp_parse_version)
52
+
53
+ # Read out version from "version" file
54
+ FILE (STRINGS "version" JSONCPP_VERSION)
55
+
56
+ jsoncpp_parse_version( ${JSONCPP_VERSION} JSONCPP_VERSION )
57
+ IF (NOT JSONCPP_VERSION_FOUND)
58
+ MESSAGE (FATAL_ERROR "Failed to parse version string properly. Expect X.Y.Z[-qualifier]" )
59
+ ENDIF (NOT JSONCPP_VERSION_FOUND)
60
+
61
+ MESSAGE (STATUS "JsonCpp Version: ${JSONCPP_VERSION_MAJOR} .${JSONCPP_VERSION_MINOR} .${JSONCPP_VERSION_PATCH}${JSONCPP_VERSION_QUALIFIER} " )
62
+ # File version.h is only regenerated on CMake configure step
63
+ CONFIGURE_FILE ( "${PROJECT_SOURCE_DIR} /src/lib_json/version.h.in"
64
+ "${PROJECT_SOURCE_DIR} /include/json/version.h" )
65
+
34
66
macro (UseCompilationWarningAsError)
35
67
if ( MSVC )
36
68
# Only enabled in debug because some old versions of VS STL generate
0 commit comments