diff --git a/MyxCMake/MyxCMakeConfig.cmake b/MyxCMake/MyxCMakeConfig.cmake index 4179772..e4ada74 100644 --- a/MyxCMake/MyxCMakeConfig.cmake +++ b/MyxCMake/MyxCMakeConfig.cmake @@ -61,7 +61,7 @@ include(${MYX_CMAKE_LIB_DIR}/AddExecutable.cmake) include(${MYX_CMAKE_LIB_DIR}/AddInterfaceLibrary.cmake) include(${MYX_CMAKE_LIB_DIR}/AddObjectLibrary.cmake) include(${MYX_CMAKE_LIB_DIR}/TargetSetup.cmake) -include(${MYX_CMAKE_LIB_DIR}/QtTargetSetup.cmake) +include(${MYX_CMAKE_LIB_DIR}/macro/QtTargetSetup.cmake) include(${MYX_CMAKE_LIB_DIR}/uncrustify/Uncrustify.cmake) include(${MYX_CMAKE_LIB_DIR}/doc/Doxygen.cmake) diff --git a/MyxCMake/MyxCMakeConfigVersion.cmake b/MyxCMake/MyxCMakeConfigVersion.cmake index 898c71d..a2910cf 100644 --- a/MyxCMake/MyxCMakeConfigVersion.cmake +++ b/MyxCMake/MyxCMakeConfigVersion.cmake @@ -1,4 +1,4 @@ -set(MYX_CMAKE_PACKAGE_VERSION "2.3.8") +set(MYX_CMAKE_PACKAGE_VERSION "2.4.1") if(MYX_CMAKE_PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) set(PACKAGE_VERSION_COMPATIBLE FALSE) else() diff --git a/MyxCMake/lib/doc/Doxygen.cmake b/MyxCMake/lib/doc/Doxygen.cmake index 569a048..6cb2fe0 100644 --- a/MyxCMake/lib/doc/Doxygen.cmake +++ b/MyxCMake/lib/doc/Doxygen.cmake @@ -2,6 +2,8 @@ if(${CMAKE_VERSION} VERSION_LESS "3.17.0") set(MYX_CMAKE_LIB_DOC_DIR_BACKPORT "${CMAKE_CURRENT_LIST_DIR}") endif() +find_package(Doxygen) + function(myx_doc_doxygen TARGET_NAME) if(${CMAKE_VERSION} VERSION_LESS "3.17.0") set(CMAKE_CURRENT_FUNCTION_LIST_DIR ${MYX_CMAKE_LIB_DOC_DIR_BACKPORT}) @@ -11,7 +13,6 @@ function(myx_doc_doxygen TARGET_NAME) return() endif() - find_package(Doxygen) if(DOXYGEN_FOUND) set(DOXYGEN_FOUND ON CACHE STRING "Doxygen documentation generator enabled" FORCE) set(DOXYGEN_EXECUTABLE "${DOXYGEN_EXECUTABLE}" CACHE STRING "Path to Doxygen executable") diff --git a/MyxCMake/lib/QtTargetSetup.cmake b/MyxCMake/lib/macro/QtTargetSetup.cmake similarity index 88% rename from MyxCMake/lib/QtTargetSetup.cmake rename to MyxCMake/lib/macro/QtTargetSetup.cmake index 140afdd..5a71130 100644 --- a/MyxCMake/lib/QtTargetSetup.cmake +++ b/MyxCMake/lib/macro/QtTargetSetup.cmake @@ -1,6 +1,40 @@ include_guard(GLOBAL) -function(myx_qt_target_setup TARGET_NAME) +macro(myx_qt_target_setup TARGET_NAME) + set(options) + set(oneValueArgs) + set(multiValueArgs COMPONENTS PRIVATE) + + cmake_parse_arguments(ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + + if(NOT ARG_VERSION) + set(ARG_VERSION "5") + endif() + + if(NOT (ARG_VERSION STREQUAL "5" OR ARG_VERSION STREQUAL "6")) + myx_message_fatal_error("Supported Qt versions are 5 and 6") + endif() + + foreach(iter ${ARG_COMPONENTS}) + find_package(Qt${ARG_VERSION} COMPONENTS ${iter} REQUIRED) + endforeach() + + foreach(iter ${ARG_PRIVATE}) + find_package("Qt${ARG_VERSION}${iter}" COMPONENTS Private REQUIRED) + endforeach() + + myx_qt_target_setup_post(${ARGV}) + + foreach(__iter IN LISTS oneValueArgs multiValueArgs) + unset(ARG_${__iter}) + endforeach() + unset(ARG_UNPARSED_ARGUMENTS) + unset(multiValueArgs) + unset(oneValueArgs) + unset(options) +endmacro() + +function(myx_qt_target_setup_post TARGET_NAME) set(options) set(oneValueArgs VERSION) set(multiValueArgs COMPONENTS PRIVATE PUBLIC_MOC PRIVATE_MOC UI QRC LANGS) @@ -18,7 +52,6 @@ function(myx_qt_target_setup TARGET_NAME) get_target_property(__target_type ${TARGET_NAME} TYPE) foreach(iter ${ARG_COMPONENTS}) - find_package(Qt${ARG_VERSION} COMPONENTS ${iter} REQUIRED) if(__target_type STREQUAL "INTERFACE_LIBRARY") target_include_directories(${TARGET_NAME} INTERFACE ${Qt${ARG_VERSION}${iter}_INCLUDE_DIRS}) else() @@ -38,7 +71,6 @@ function(myx_qt_target_setup TARGET_NAME) endforeach() foreach(iter ${ARG_PRIVATE}) - find_package("Qt${ARG_VERSION}${iter}" COMPONENTS Private REQUIRED) if(__target_type STREQUAL "INTERFACE_LIBRARY") target_include_directories(${TARGET_NAME} INTERFACE ${Qt${ARG_VERSION}${iter}_PRIVATE_INCLUDE_DIRS}) else() diff --git a/README.md b/README.md index e6e39b1..95e3009 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ ## Установка В корневом каталоге проекта создать каталог `cmake` и распаковать в него -[архив](../../../releases/download/2.3.8/myx-cmake-local-2.3.8.tar.xz ). +[архив](../../../releases/download/2.4.1/myx-cmake-local-2.4.1.tar.xz ). ## Использование diff --git a/VERSION b/VERSION index bc4abe8..005119b 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.3.8 +2.4.1 diff --git a/debian/CMakeLists.txt b/debian/CMakeLists.txt index 0bf2e0d..9e8ad40 100644 --- a/debian/CMakeLists.txt +++ b/debian/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.6 FATAL_ERROR) -project(myx-cmake VERSION 2.3.8 LANGUAGES) +project(myx-cmake VERSION 2.4.1 LANGUAGES) include(GNUInstallDirs) file(WRITE ${CMAKE_SOURCE_DIR}/MyxCMake/MyxCMakeConfigVersion.cmake diff --git a/debian/changelog b/debian/changelog index a0bc1e3..9739e5d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -myx-cmake (2.3.8) unstable; urgency=medium +myx-cmake (2.4.1) unstable; urgency=medium * New version. diff --git a/myx_setup.cmake b/myx_setup.cmake index 4534a05..b4761b7 100644 --- a/myx_setup.cmake +++ b/myx_setup.cmake @@ -20,11 +20,11 @@ if(ENV{MYX_CMAKE_DIR}) set(MYX_CMAKE_DIR $ENV{MYX_CMAKE_DIR}) endif() if(MYX_CMAKE_DIR) - find_package(MyxCMake 2.3.8 REQUIRED CONFIG PATHS ${MYX_CMAKE_DIR} NO_DEFAULT_PATH) + find_package(MyxCMake 2.4.1 REQUIRED CONFIG PATHS ${MYX_CMAKE_DIR} NO_DEFAULT_PATH) myx_message_notice("== MyxCMake directory: ${MyxCMake_CONFIG} ==") else() if(MYX_CMAKE_USE_SYSTEM) - find_package(MyxCMake 2.3.8 REQUIRED) + find_package(MyxCMake 2.4.1 REQUIRED) myx_message_notice("== MyxCMake directory: ${MyxCMake_CONFIG} ==") else() include(${PROJECT_SOURCE_DIR}/cmake/myx/MyxCMakeConfig.cmake)