From 46ea46d486817af73b3b2f83373f1dd9d82e3783 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=B5=D0=BB=D0=B8=D0=BF=D0=B5=D0=BD=D0=BA=D0=BE=20?= =?UTF-8?q?=D0=98=D0=B2=D0=B0=D0=BD?= Date: Thu, 26 Mar 2020 18:51:52 +0000 Subject: [PATCH] git-svn-id: svn://db.shs.com.ru/libs@912 a8b55f48-bf90-11e4-a774-851b48703e85 --- CMakeLists.txt | 1 + qad/CMakeLists.txt | 41 ++++++++++++++++++++++++++++++++--------- qad/cmake/FindQAD.cmake | 20 +++++++++++++++++++- 3 files changed, 52 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3d71e0c..b41b8db 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,6 +8,7 @@ endif() project(libs) set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/pip/cmake" "${CMAKE_CURRENT_SOURCE_DIR}/qad/cmake") include(SDKMacros) +include(DeployMacros) set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) set(LIBPROJECT 1) if(NOT DEFINED BUILD_NUMBER) diff --git a/qad/CMakeLists.txt b/qad/CMakeLists.txt index dda3489..b85e673 100644 --- a/qad/CMakeLists.txt +++ b/qad/CMakeLists.txt @@ -1,6 +1,13 @@ cmake_minimum_required(VERSION 3.0) cmake_policy(SET CMP0017 NEW) # need include() with .cmake project(qad) +set(_QAD_MAJOR 1) +set(_QAD_MINOR 0) +set(_QAD_REVISION 0) +set(_QAD_SUFFIX ) +set(_QAD_COMPANY SHS) +set(_QAD_DOMAIN org.SHS) + if ("x${CMAKE_MODULE_PATH}" STREQUAL "x") set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") endif() @@ -35,6 +42,19 @@ if (MINGW) find_package(MinGW REQUIRED) endif() + +# Version +set(QAD_VERSION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/qad_version.h") +set_version(QAD + MAJOR "${_QAD_MAJOR}" + MINOR "${_QAD_MINOR}" + REVISION "${_QAD_REVISION}" + BUILD "${BUILD_NUMBER}" + SUFFIX "${_QAD_SUFFIX}" + OUTPUT "${QAD_VERSION_FILE}") +message(STATUS "Building QAD version ${QAD_VERSION}") + + if (NOT LIBPROJECT) if (LIB) if(WIN32) @@ -67,21 +87,24 @@ else() install(FILES ${EXPORT_HEADER} DESTINATION include/qad) endif() -macro(qad_install _TARGET _H_FILES _QM_FILES) +macro(qad_install _TARGET _HDR_VAR _QM_FILES) + if ("${_TARGET}" STREQUAL "qad_utils") + list(APPEND ${_HDR_VAR} "${QAD_VERSION_FILE}") + endif() if (LIBPROJECT) - sdk_install("qad" "${_TARGET}" "${_H_FILES}" "${_QM_FILES}") + sdk_install("qad" "${_TARGET}" "${${_HDR_VAR}}" "${_QM_FILES}") else() if (LIB) if (WIN32) - if(NOT "x${_H_FILES}" STREQUAL "x") - install(FILES ${_H_FILES} DESTINATION ${MINGW_INCLUDE}/qad) + if(NOT "x${${_HDR_VAR}}" STREQUAL "x") + install(FILES ${${_HDR_VAR}} DESTINATION ${MINGW_INCLUDE}/qad) endif() qt_install(TARGETS ${_TARGET} ARCHIVE DESTINATION ${MINGW_LIB}) qt_install(TARGETS ${_TARGET} RUNTIME DESTINATION ${MINGW_BIN}) qt_install(TARGETS ${_TARGET} RUNTIME DESTINATION QtBin) else() - if(NOT "x${_H_FILES}" STREQUAL "x") - install(FILES ${_H_FILES} DESTINATION ${CMAKE_INSTALL_PREFIX}/include/qad) + if(NOT "x${${_HDR_VAR}}" STREQUAL "x") + install(FILES ${${_HDR_VAR}} DESTINATION ${CMAKE_INSTALL_PREFIX}/include/qad) endif() qt_install(TARGETS ${_TARGET} ARCHIVE DESTINATION ${CMAKE_INSTALL_PREFIX}/lib) endif() @@ -95,8 +118,8 @@ macro(qad_install _TARGET _H_FILES _QM_FILES) else() qt_install(TARGETS ${_TARGET} DESTINATION lib) endif() - if(NOT "x${_H_FILES}" STREQUAL "x") - install(FILES ${_H_FILES} DESTINATION include/qad) + if(NOT "x${${_HDR_VAR}}" STREQUAL "x") + install(FILES ${${_HDR_VAR}} DESTINATION include/qad) endif() if(NOT "x${_QM_FILES}" STREQUAL "x") qt_install(LANG ${_QM_FILES} DESTINATION lang) @@ -138,7 +161,7 @@ macro(qad_project NAME _MODULES _LIBS) qt_target_compile_definitions(${PROJ_NAME} PRIVATE QAD_SHARED_DEFINE) endif() qt_target_link_libraries(${PROJ_NAME} ${_LIBS}) - qad_install(${PROJ_NAME} "${out_HDR}" "out_QM") + qad_install(${PROJ_NAME} "out_HDR" "out_QM") set(${NAME}_UTILS 1) if (LIBPROJECT) set(${NAME}_UTILS ${UTILS}) diff --git a/qad/cmake/FindQAD.cmake b/qad/cmake/FindQAD.cmake index 08b0641..f0b4b81 100644 --- a/qad/cmake/FindQAD.cmake +++ b/qad/cmake/FindQAD.cmake @@ -68,9 +68,27 @@ endforeach() if(hasParent) set(QT_MULTILIB_LIST ${QT_MULTILIB_LIST} PARENT_SCOPE) endif() + if(NOT LIBPROJECT) + if(NOT QAD_VERSION) + include(CheckSymbolExists) + check_symbol_exists(QAD_VERSION_NAME "${QAD_INCLUDES}/qad_version.h" HAVE_QAD_VERSION) + if (HAVE_QAD_VERSION) + file(STRINGS "${QAD_INCLUDES}/qad_version.h" _VERSION REGEX "^[ \t]*#define[ \t]+QAD_VERSION_NAME+[ \t]+.*$") + string(REGEX MATCH "\".*\"" _VERSION ${_VERSION}) + string(LENGTH ${_VERSION} SL) + math(EXPR SL ${SL}-2) + string(SUBSTRING ${_VERSION} 1 ${SL} _VERSION) + set(QAD_VERSION ${_VERSION} CACHE STRING "VERSION") + else() + message(FATAL_ERROR "Can`t find QAD version file!") + endif() + endif() + if(QAD_FIND_VERSION VERSION_GREATER QAD_VERSION) + message(FATAL_ERROR "QAD version ${QAD_VERSION} is available, but ${QAD_FIND_VERSION} requested!") + endif() if (NOT _QAD_MSG) set(_QAD_MSG 1 CACHE BOOL "msg_qad" FORCE) - message(STATUS "Found QAD") + message(STATUS "Found QAD (found version \"${QAD_VERSION}\")") endif() endif()