CPackIFW: Framework version

Improved algorithm for finding the version of QtIFW tools.
This commit is contained in:
Konstantin Podsvirov
2017-04-22 03:20:43 +03:00
parent 3cb7048b52
commit 993ebdc72d

View File

@@ -717,21 +717,58 @@ set(CPackIFW_CMake_INCLUDED 1)
# Framework version # Framework version
#============================================================================= #=============================================================================
if(CPACK_IFW_INSTALLERBASE_EXECUTABLE AND CPACK_IFW_DEVTOOL_EXECUTABLE) set(CPACK_IFW_FRAMEWORK_VERSION_FORCED ""
execute_process(COMMAND CACHE STRING "The forced version of used QtIFW tools")
"${CPACK_IFW_INSTALLERBASE_EXECUTABLE}" --framework-version mark_as_advanced(CPACK_IFW_FRAMEWORK_VERSION_FORCED)
OUTPUT_VARIABLE CPACK_IFW_FRAMEWORK_VERSION) set(CPACK_IFW_FRAMEWORK_VERSION_TIMEOUT 1
if(CPACK_IFW_FRAMEWORK_VERSION) CACHE STRING "The timeout to return QtIFW framework version string from \"installerbase\" executable")
string(REPLACE " " "" mark_as_advanced(CPACK_IFW_FRAMEWORK_VERSION_TIMEOUT)
CPACK_IFW_FRAMEWORK_VERSION "${CPACK_IFW_FRAMEWORK_VERSION}") if(CPACK_IFW_INSTALLERBASE_EXECUTABLE AND NOT CPACK_IFW_FRAMEWORK_VERSION_FORCED)
string(REPLACE "\t" "" set(CPACK_IFW_FRAMEWORK_VERSION)
CPACK_IFW_FRAMEWORK_VERSION "${CPACK_IFW_FRAMEWORK_VERSION}") # Invoke version from "installerbase" executable
string(REPLACE "\n" "" foreach(_ifw_version_argument --framework-version --version)
CPACK_IFW_FRAMEWORK_VERSION "${CPACK_IFW_FRAMEWORK_VERSION}") if(NOT CPACK_IFW_FRAMEWORK_VERSION)
if(CPACK_IFW_VERBOSE) execute_process(COMMAND
message(STATUS "Found QtIFW ${CPACK_IFW_FRAMEWORK_VERSION} version") "${CPACK_IFW_INSTALLERBASE_EXECUTABLE}" ${_ifw_version_argument}
TIMEOUT ${CPACK_IFW_FRAMEWORK_VERSION_TIMEOUT}
RESULT_VARIABLE CPACK_IFW_FRAMEWORK_VERSION_RESULT
OUTPUT_VARIABLE CPACK_IFW_FRAMEWORK_VERSION_OUTPUT
OUTPUT_STRIP_TRAILING_WHITESPACE
ENCODING UTF8)
if(NOT CPACK_IFW_FRAMEWORK_VERSION_RESULT AND CPACK_IFW_FRAMEWORK_VERSION_OUTPUT)
string(REGEX MATCH "[0-9]+(\\.[0-9]+)*"
CPACK_IFW_FRAMEWORK_VERSION "${CPACK_IFW_FRAMEWORK_VERSION_OUTPUT}")
if(CPACK_IFW_FRAMEWORK_VERSION)
if("${_ifw_version_argument}" STREQUAL "--framework-version")
set(CPACK_IFW_FRAMEWORK_VERSION_SOURCE "INSTALLERBASE_FRAMEWORK_VERSION")
elseif("${_ifw_version_argument}" STREQUAL "--version")
set(CPACK_IFW_FRAMEWORK_VERSION_SOURCE "INSTALLERBASE_FRAMEWORK_VERSION")
endif()
endif()
endif()
endif()
endforeach()
# Finaly try to get version from executable path
if(NOT CPACK_IFW_FRAMEWORK_VERSION)
string(REGEX MATCH "[0-9]+(\\.[0-9]+)*"
CPACK_IFW_FRAMEWORK_VERSION "${CPACK_IFW_INSTALLERBASE_EXECUTABLE}")
if(CPACK_IFW_FRAMEWORK_VERSION)
set(CPACK_IFW_FRAMEWORK_VERSION_SOURCE "INSTALLERBASE_PATH")
endif() endif()
endif() endif()
elseif(CPACK_IFW_FRAMEWORK_VERSION_FORCED)
set(CPACK_IFW_FRAMEWORK_VERSION ${CPACK_IFW_FRAMEWORK_VERSION_FORCED})
set(CPACK_IFW_FRAMEWORK_VERSION_SOURCE "FORCED")
endif()
if(CPACK_IFW_VERBOSE)
if(CPACK_IFW_FRAMEWORK_VERSION AND CPACK_IFW_FRAMEWORK_VERSION_FORCED)
message(STATUS "Found QtIFW ${CPACK_IFW_FRAMEWORK_VERSION} (forced) version")
elseif(CPACK_IFW_FRAMEWORK_VERSION)
message(STATUS "Found QtIFW ${CPACK_IFW_FRAMEWORK_VERSION} version")
endif()
endif()
if(CPACK_IFW_INSTALLERBASE_EXECUTABLE AND NOT CPACK_IFW_FRAMEWORK_VERSION)
message(WARNING "Could not detect QtIFW tools version. Set used version to variable \"CPACK_IFW_FRAMEWORK_VERSION_FORCED\" manualy.")
endif() endif()
#============================================================================= #=============================================================================