diff --git a/CMakeLists.txt b/CMakeLists.txt index 326b2ec..ffaf928 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -32,6 +32,7 @@ project(FramelessHelper include(CMakeDependentOption) +# TODO: Use add_feature_info() for every option below? Is it worth doing? option(FRAMELESSHELPER_BUILD_STATIC "Build FramelessHelper as a static library." OFF) option(FRAMELESSHELPER_BUILD_WIDGETS "Build FramelessHelper's Widgets module." ON) option(FRAMELESSHELPER_BUILD_QUICK "Build FramelessHelper's Quick module." ON) @@ -121,6 +122,9 @@ if(MSVC) endif() endif() if(FRAMELESSHELPER_ENABLE_YYTHUNKS) + unset(YYTHUNKS_TARGET_OS) + unset(YYTHUNKS_TARGET_OS CACHE) + #unset(YYTHUNKS_TARGET_OS PARENT_SCOPE) set(YYTHUNKS_TARGET_OS "WinXP" CACHE STRING "" FORCE) include(cmake/YY-Thunks.cmake) endif() diff --git a/FramelessHelperConfig.cmake.in b/FramelessHelperConfig.cmake.in index 0151ef8..45240f5 100644 --- a/FramelessHelperConfig.cmake.in +++ b/FramelessHelperConfig.cmake.in @@ -28,12 +28,7 @@ set(_@PROJECT_NAME@_supported_components Core Widgets Quick) foreach(_comp ${@PROJECT_NAME@_FIND_COMPONENTS}) if(_comp IN_LIST _@PROJECT_NAME@_supported_components) - set(__proj_name "@PROJECT_NAME@${_comp}") - cmake_path(GET CMAKE_CURRENT_LIST_FILE PARENT_PATH __imp_prefix) - cmake_path(GET __imp_prefix PARENT_PATH __imp_prefix) - include("${__imp_prefix}/${__proj_name}/${__proj_name}Config.cmake") - unset(__imp_prefix) - unset(__proj_name) + include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@${_comp}Config.cmake") else() set(@PROJECT_NAME@_FOUND FALSE) set(@PROJECT_NAME@_NOT_FOUND_MESSAGE "Unsupported component: ${_comp}") @@ -52,3 +47,9 @@ if(NOT DEFINED @PROJECT_NAME@_FOUND) set(@PROJECT_NAME@_COMMIT "@PROJECT_VERSION_COMMIT@") set(@PROJECT_NAME@_COMPILE_DATETIME "@PROJECT_COMPILE_DATETIME@") endif() + +include(FeatureSummary) +set_package_properties(@PROJECT_NAME@ PROPERTIES + DESCRIPTION "@PROJECT_DESCRIPTION@" + URL "@PROJECT_HOMEPAGE_URL@" +) \ No newline at end of file diff --git a/FramelessHelperModuleConfig.cmake.in b/FramelessHelperModuleConfig.cmake.in deleted file mode 100644 index a2497bf..0000000 --- a/FramelessHelperModuleConfig.cmake.in +++ /dev/null @@ -1,59 +0,0 @@ -#[[ - MIT License - - Copyright (C) 2021-2023 by wangwenx190 (Yuhang Zhao) - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. -]] - -if(NOT DEFINED @SUB_PROJ_NAME@_FOUND) - set(@SUB_PROJ_NAME@_FOUND TRUE) -endif() - -if(@SUB_PROJ_NAME@_FOUND) - include("${CMAKE_CURRENT_LIST_DIR}/@SUB_PROJ_NAME@Targets.cmake") -endif() - -if(TARGET @PROJECT_NAME@::@SUB_MOD_NAME@) - set(@SUB_PROJ_NAME@_LIBRARIES @PROJECT_NAME@::@SUB_MOD_NAME@) - get_target_property(@SUB_PROJ_NAME@_VERSION @PROJECT_NAME@::@SUB_MOD_NAME@ VERSION) - if(NOT @SUB_PROJ_NAME@_VERSION) - set(@SUB_PROJ_NAME@_VERSION "") - endif() - get_target_property(@SUB_PROJ_NAME@_INCLUDE_DIRS @PROJECT_NAME@::@SUB_MOD_NAME@ INTERFACE_INCLUDE_DIRECTORIES) - if(NOT @SUB_PROJ_NAME@_INCLUDE_DIRS) - set(@SUB_PROJ_NAME@_INCLUDE_DIRS "") - endif() - get_target_property(@SUB_PROJ_NAME@_DEFINITIONS @PROJECT_NAME@::@SUB_MOD_NAME@ INTERFACE_COMPILE_DEFINITIONS) - if(NOT @SUB_PROJ_NAME@_DEFINITIONS) - set(@SUB_PROJ_NAME@_DEFINITIONS "") - else() - list(TRANSFORM @SUB_PROJ_NAME@_DEFINITIONS PREPEND "-D") - endif() - get_target_property(@SUB_PROJ_NAME@_COMPILE_DEFINITIONS @PROJECT_NAME@::@SUB_MOD_NAME@ INTERFACE_COMPILE_DEFINITIONS) - if(NOT @SUB_PROJ_NAME@_COMPILE_DEFINITIONS) - set(@SUB_PROJ_NAME@_COMPILE_DEFINITIONS "") - endif() - list(REMOVE_DUPLICATES @SUB_PROJ_NAME@_INCLUDE_DIRS) - list(REMOVE_DUPLICATES @SUB_PROJ_NAME@_DEFINITIONS) - list(REMOVE_DUPLICATES @SUB_PROJ_NAME@_COMPILE_DEFINITIONS) -else() - set(@SUB_PROJ_NAME@_FOUND FALSE) - set(@SUB_PROJ_NAME@_NOT_FOUND_MESSAGE "Target \"@PROJECT_NAME@::@SUB_MOD_NAME@\" was not found.") -endif() diff --git a/FramelessHelperModuleTargets.cmake.in b/FramelessHelperModuleTargets.cmake.in deleted file mode 100644 index f6dee4d..0000000 --- a/FramelessHelperModuleTargets.cmake.in +++ /dev/null @@ -1,47 +0,0 @@ -#[[ - MIT License - - Copyright (C) 2021-2023 by wangwenx190 (Yuhang Zhao) - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. -]] - -if(NOT TARGET @PROJECT_NAME@::@SUB_MOD_NAME@) - cmake_path(GET CMAKE_CURRENT_LIST_FILE PARENT_PATH __import_prefix) - cmake_path(GET __import_prefix PARENT_PATH __import_prefix) - cmake_path(GET __import_prefix PARENT_PATH __import_prefix) - cmake_path(GET __import_prefix PARENT_PATH __import_prefix) - if(__import_prefix STREQUAL "/") - set(__import_prefix "") - endif() - add_library(@SUB_PROJ_NAME@ @SUB_MOD_LIB_TYPE@ IMPORTED) - add_library(@PROJECT_NAME@::@SUB_MOD_NAME@ ALIAS @SUB_PROJ_NAME@) - set_target_properties(@SUB_PROJ_NAME@ PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES "${__import_prefix}/include;${__import_prefix}/include/@PROJECT_NAME@;${__import_prefix}/include/@SUB_PROJ_PATH@;${__import_prefix}/include/@SUB_PROJ_PATH@/private" - INTERFACE_COMPILE_DEFINITIONS "@SUB_MOD_DEFS@" - IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" - IMPORTED_LOCATION "${__import_prefix}/@SUB_MOD_LIB_DIR@/@SUB_MOD_FILE_NAME@" - IMPORTED_IMPLIB "${__import_prefix}/lib/@SUB_MOD_IMPLIB_FILE_NAME@" - VERSION "@PROJECT_VERSION@" - SOVERSION "@PROJECT_VERSION_MAJOR@" - __COMMIT "@PROJECT_VERSION_COMMIT@" - __COMPILE_DATETIME "@PROJECT_COMPILE_DATETIME@" - ) - unset(__import_prefix) -endif() diff --git a/README.md b/README.md index 78110dc..72e1fce 100644 --- a/README.md +++ b/README.md @@ -147,7 +147,7 @@ cmake -DQt5_DIR=C:/Qt/5.15.2/msvc2019_64/lib/cmake/Qt5 [other parameters ...] If there are any errors when cloning the submodules, try run `git submodule update --init --recursive --remote` in the project directory, that command will download & update all the submodules. If it fails again, try execute it multiple times until it finally succeeds. -Once the compilation and installation is done, you will be able to use the `find_package(FramelessHelper REQUIRED COMPONENTS Core Widgets Quick)` command to find and link to the FramelessHelper library. But before doing that, please make sure CMake knows where to find FramelessHelper, by passing the `CMAKE_PREFIX_PATH` variable to it. For example: `-DCMAKE_PREFIX_PATH=C:/my-cmake-packages;C:/my-toolchain;etc...`. Build FramelessHelper as a sub-directory of your CMake project is of course also supported. The supported FramelessHelper target names are `FramelessHelper::Core`, `FramelessHelper::Widgets` and `FramelessHelper::Quick`. Example code: +Once the compilation and installation is done, you will be able to use the `find_package(FramelessHelper REQUIRED COMPONENTS Core Widgets Quick)` command to find and link to the FramelessHelper library. But before doing that, please make sure CMake knows where to find FramelessHelper, by passing the `CMAKE_PREFIX_PATH` or `FramelessHelper_DIR` variable to it. For example: `-DCMAKE_PREFIX_PATH=C:/my-cmake-packages;C:/my-toolchain;etc...` or `-DFramelessHelper_DIR=C:/Projects/FramelessHelper/lib64/cmake/FramelessHelper`. Build FramelessHelper as a sub-directory of your CMake project is of course also supported. The supported FramelessHelper target names are `FramelessHelper::Core`, `FramelessHelper::Widgets` and `FramelessHelper::Quick`. Example code: ```cmake # Find Qt: @@ -182,8 +182,6 @@ list(REMOVE_DUPLICATES QML_IMPORT_PATH) set(QML_IMPORT_PATH ${QML_IMPORT_PATH} CACHE STRING "Qt Creator extra QML import paths" FORCE) ``` -**IMPORTANT NOTE**: Currently *Ninja Multi-Config* is known to be **NOT** supported, you can only build one single configuration at a time, however, I'm planning to support it as soon as possible, in a future version. - ## Use ### Qt Widgets diff --git a/cmake b/cmake index 35a5dbb..f41e3f8 160000 --- a/cmake +++ b/cmake @@ -1 +1 @@ -Subproject commit 35a5dbbb0ea3fe1431c1dbf75d4bc329c86d61e5 +Subproject commit f41e3f888db144b5d30a3bd8d227905a391531f1 diff --git a/msbuild/FramelessHelper.props b/msbuild/FramelessHelper.props index c5c3dbc..29c2db2 100644 --- a/msbuild/FramelessHelper.props +++ b/msbuild/FramelessHelper.props @@ -1,7 +1,7 @@  - $(MSBuildThisFileDirectory)lib;$(LibraryPath) + $(MSBuildThisFileDirectory)lib64;$(MSBuildThisFileDirectory)lib64\debug;$(MSBuildThisFileDirectory)lib64\release;$(LibraryPath) $(MSBuildThisFileDirectory)include;$(MSBuildThisFileDirectory)include\FramelessHelper;$(MSBuildThisFileDirectory)include\FramelessHelper\Core;$(MSBuildThisFileDirectory)include\FramelessHelper\Core\private;$(MSBuildThisFileDirectory)include\FramelessHelper\Widgets;$(MSBuildThisFileDirectory)include\FramelessHelper\Widgets\private;$(MSBuildThisFileDirectory)include\FramelessHelper\Quick;$(MSBuildThisFileDirectory)include\FramelessHelper\Quick\private;$(QtHeaderSearchPath) diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 3c56acd..cfc933d 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -52,11 +52,11 @@ if(UNIX AND NOT APPLE) endif() endif() -set(SUB_MOD_NAME Core) -set(SUB_PROJ_NAME ${PROJECT_NAME}${SUB_MOD_NAME}) -set(SUB_PROJ_PATH ${PROJECT_NAME}/${SUB_MOD_NAME}) +set(SUB_MODULE Core) +set(SUB_MODULE_FULL_NAME ${PROJECT_NAME}${SUB_MODULE}) +set(SUB_MODULE_PATH ${PROJECT_NAME}/${SUB_MODULE}) -set(INCLUDE_PREFIX ../../include/${SUB_PROJ_PATH}) +set(INCLUDE_PREFIX ../../include/${SUB_MODULE_PATH}) configure_file(framelesshelper.version.in ${CMAKE_CURRENT_BINARY_DIR}/framelesshelper.version @ONLY) @@ -142,18 +142,20 @@ elseif(UNIX) endif() if(WIN32 AND NOT FRAMELESSHELPER_BUILD_STATIC) - set(__rc_path "${CMAKE_CURRENT_BINARY_DIR}/${SUB_PROJ_NAME}.rc") - generate_win32_rc_file( - PATH "${__rc_path}" - VERSION "${PROJECT_VERSION}" - COMPANY "wangwenx190" - DESCRIPTION "${PROJECT_NAME} ${SUB_MOD_NAME} Module" - COPYRIGHT "MIT License" - ORIGINAL_FILENAME "${PROJECT_NAME}${SUB_MOD_NAME}.dll" - PRODUCT "${PROJECT_NAME}" - COMMENTS "Built from commit ${PROJECT_VERSION_COMMIT} on ${PROJECT_COMPILE_DATETIME} (UTC)." - LIBRARY - ) + set(__rc_path "${CMAKE_CURRENT_BINARY_DIR}/${SUB_MODULE_FULL_NAME}.rc") + if(NOT EXISTS "${__rc_path}") + generate_win32_rc_file( + PATH "${__rc_path}" + VERSION "${PROJECT_VERSION}" + COMPANY "wangwenx190" + DESCRIPTION "${PROJECT_NAME} ${SUB_MODULE} Module" + COPYRIGHT "MIT License" + ORIGINAL_FILENAME "${PROJECT_NAME}${SUB_MODULE}.dll" + PRODUCT "${PROJECT_NAME}" + COMMENTS "Built from commit ${PROJECT_VERSION_COMMIT} on ${PROJECT_COMPILE_DATETIME} (UTC)." + LIBRARY + ) + endif() list(APPEND SOURCES "${__rc_path}") endif() @@ -164,63 +166,20 @@ if(FRAMELESSHELPER_BUILD_STATIC) else() set(SUB_MOD_LIB_TYPE "SHARED") endif() -add_library(${SUB_PROJ_NAME} ${SUB_MOD_LIB_TYPE} ${ALL_SOURCES}) -add_library(${PROJECT_NAME}::${SUB_PROJ_NAME} ALIAS ${SUB_PROJ_NAME}) -add_library(${PROJECT_NAME}::${SUB_MOD_NAME} ALIAS ${SUB_PROJ_NAME}) +add_library(${SUB_MODULE} ${SUB_MOD_LIB_TYPE} ${ALL_SOURCES}) +add_library(${SUB_MODULE_FULL_NAME} ALIAS ${SUB_MODULE}) +add_library(${PROJECT_NAME}::${SUB_MODULE} ALIAS ${SUB_MODULE}) +add_library(${PROJECT_NAME}::${SUB_MODULE_FULL_NAME} ALIAS ${SUB_MODULE}) -set_target_properties(${SUB_PROJ_NAME} PROPERTIES +set_target_properties(${SUB_MODULE} PROPERTIES VERSION "${PROJECT_VERSION}" SOVERSION "${PROJECT_VERSION_MAJOR}" + OUTPUT_NAME "${SUB_MODULE_FULL_NAME}" ) -set(SUB_MOD_TARGETS ${SUB_PROJ_NAME}) - -if(WIN32 AND NOT FRAMELESSHELPER_BUILD_STATIC) - set(SUB_MOD_LIB_DIR "${CMAKE_INSTALL_BINDIR}") -else() - set(SUB_MOD_LIB_DIR "${CMAKE_INSTALL_LIBDIR}") -endif() - -set(SUB_MOD_FILE_PREFIX "") -if(NOT MSVC) - set(SUB_MOD_FILE_PREFIX "lib") -endif() -set(SUB_MOD_FILE_SUFFIX "") -set(SUB_MOD_IMPLIB_FILE_SUFFIX "") -if(FRAMELESSHELPER_BUILD_STATIC) - if(MSVC) - set(SUB_MOD_FILE_SUFFIX "lib") - set(SUB_MOD_IMPLIB_FILE_SUFFIX "lib") - else() - set(SUB_MOD_FILE_SUFFIX "a") - set(SUB_MOD_IMPLIB_FILE_SUFFIX "a") - endif() -else() - if(WIN32) - set(SUB_MOD_FILE_SUFFIX "dll") - if(MSVC) - set(SUB_MOD_IMPLIB_FILE_SUFFIX "lib") - else() - set(SUB_MOD_IMPLIB_FILE_SUFFIX "dll.a") - endif() - elseif(APPLE) - set(SUB_MOD_FILE_SUFFIX "dylib") - set(SUB_MOD_IMPLIB_FILE_SUFFIX "a") - else() - set(SUB_MOD_FILE_SUFFIX "so") - set(SUB_MOD_IMPLIB_FILE_SUFFIX "a") - endif() -endif() -set(SUB_MOD_FILE_BASENAME "${SUB_MOD_FILE_PREFIX}${SUB_PROJ_NAME}") -if("x${CMAKE_BUILD_TYPE}" STREQUAL "xDebug") - string(APPEND SUB_MOD_FILE_BASENAME "${CMAKE_DEBUG_POSTFIX}") -endif() -set(SUB_MOD_FILE_NAME "${SUB_MOD_FILE_BASENAME}.${SUB_MOD_FILE_SUFFIX}") -set(SUB_MOD_IMPLIB_FILE_NAME "${SUB_MOD_FILE_BASENAME}.${SUB_MOD_IMPLIB_FILE_SUFFIX}") - if(NOT FRAMELESSHELPER_NO_BUNDLE_RESOURCE) if(QT_VERSION VERSION_GREATER_EQUAL "6.2") - qt_add_resources(${SUB_PROJ_NAME} framelesshelpercore + qt_add_resources(${SUB_MODULE} framelesshelpercore PREFIX "/org.wangwenx190.${PROJECT_NAME}" FILES @@ -230,114 +189,101 @@ if(NOT FRAMELESSHELPER_NO_BUNDLE_RESOURCE) ) if(__qrc_targets) foreach(__target ${__qrc_targets}) - list(APPEND SUB_MOD_TARGETS ${__target}) if(FRAMELESSHELPER_BUILD_STATIC) - target_sources(${SUB_PROJ_NAME} PRIVATE + target_sources(${SUB_MODULE} PRIVATE $ ) endif() endforeach() endif() else() - target_sources(${SUB_PROJ_NAME} PRIVATE + target_sources(${SUB_MODULE} PRIVATE framelesshelpercore.qrc ) endif() endif() if(FRAMELESSHELPER_BUILD_STATIC) - set(__def FRAMELESSHELPER_CORE_STATIC) - target_compile_definitions(${SUB_PROJ_NAME} PUBLIC ${__def}) - list(APPEND SUB_MOD_DEFS ${__def}) - unset(__def) + target_compile_definitions(${SUB_MODULE} PUBLIC FRAMELESSHELPER_CORE_STATIC) endif() if(FRAMELESSHELPER_NO_DEBUG_OUTPUT) - target_compile_definitions(${SUB_PROJ_NAME} PRIVATE + target_compile_definitions(${SUB_MODULE} PRIVATE FRAMELESSHELPER_CORE_NO_DEBUG_OUTPUT ) endif() if(FRAMELESSHELPER_NO_BUNDLE_RESOURCE) - set(__def FRAMELESSHELPER_CORE_NO_BUNDLE_RESOURCE) - target_compile_definitions(${SUB_PROJ_NAME} PUBLIC ${__def}) - list(APPEND SUB_MOD_DEFS ${__def}) - unset(__def) + target_compile_definitions(${SUB_MODULE} PUBLIC FRAMELESSHELPER_CORE_NO_BUNDLE_RESOURCE) endif() if(FRAMELESSHELPER_NO_PRIVATE) - set(__def FRAMELESSHELPER_CORE_NO_PRIVATE) - target_compile_definitions(${SUB_PROJ_NAME} PUBLIC ${__def}) - list(APPEND SUB_MOD_DEFS ${__def}) - unset(__def) + target_compile_definitions(${SUB_MODULE} PUBLIC FRAMELESSHELPER_CORE_NO_PRIVATE) endif() if(DEFINED FRAMELESSHELPER_NAMESPACE) if("x${FRAMELESSHELPER_NAMESPACE}" STREQUAL "x") message(FATAL_ERROR "FRAMELESSHELPER_NAMESPACE can't be empty!") endif() - set(__def FRAMELESSHELPER_NAMESPACE=${FRAMELESSHELPER_NAMESPACE}) - target_compile_definitions(${SUB_PROJ_NAME} PUBLIC ${__def}) - list(APPEND SUB_MOD_DEFS ${__def}) - unset(__def) + target_compile_definitions(${SUB_MODULE} PUBLIC FRAMELESSHELPER_NAMESPACE=${FRAMELESSHELPER_NAMESPACE}) endif() -target_compile_definitions(${SUB_PROJ_NAME} PRIVATE +target_compile_definitions(${SUB_MODULE} PRIVATE FRAMELESSHELPER_CORE_LIBRARY ) if(APPLE) - target_link_libraries(${SUB_PROJ_NAME} PRIVATE + target_link_libraries(${SUB_MODULE} PRIVATE "-framework Foundation" "-framework Cocoa" "-framework AppKit" ) elseif(UNIX) if(TARGET X11::xcb) - target_link_libraries(${SUB_PROJ_NAME} PRIVATE + target_link_libraries(${SUB_MODULE} PRIVATE X11::xcb ) endif() if(TARGET PkgConfig::GTK3) - target_link_libraries(${SUB_PROJ_NAME} PRIVATE + target_link_libraries(${SUB_MODULE} PRIVATE PkgConfig::GTK3 ) - target_compile_definitions(${SUB_PROJ_NAME} PRIVATE + target_compile_definitions(${SUB_MODULE} PRIVATE GDK_VERSION_MIN_REQUIRED=GDK_VERSION_3_6 ) endif() endif() if(FRAMELESSHELPER_NO_PRIVATE) - target_link_libraries(${SUB_PROJ_NAME} PRIVATE + target_link_libraries(${SUB_MODULE} PRIVATE Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Gui ) # Qt X11Extras was first introduced in 5.1 and got removed in 6.0 # But it was again brought back as a private feature of QtGui in 6.2 if(TARGET Qt5::X11Extras) - target_link_libraries(${SUB_PROJ_NAME} PRIVATE + target_link_libraries(${SUB_MODULE} PRIVATE Qt5::X11Extras ) endif() else() - target_link_libraries(${SUB_PROJ_NAME} PRIVATE + target_link_libraries(${SUB_MODULE} PRIVATE Qt${QT_VERSION_MAJOR}::CorePrivate Qt${QT_VERSION_MAJOR}::GuiPrivate ) endif() -target_include_directories(${SUB_PROJ_NAME} PUBLIC +target_include_directories(${SUB_MODULE} PUBLIC "$" "$" "$" "$" "$" - "$" - "$" + "$" + "$" ) -setup_qt_stuff(TARGETS ${SUB_PROJ_NAME}) +setup_qt_stuff(TARGETS ${SUB_MODULE}) set(__extra_flags) if(NOT FRAMELESSHELPER_NO_PERMISSIVE_CHECKS) list(APPEND __extra_flags PERMISSIVE) @@ -360,35 +306,19 @@ endif() if(FRAMELESSHELPER_FORCE_LTO) list(APPEND __extra_flags FORCE_LTO) endif() -setup_compile_params(TARGETS ${SUB_PROJ_NAME} ${__extra_flags}) +setup_compile_params(TARGETS ${SUB_MODULE} ${__extra_flags}) if(NOT FRAMELESSHELPER_NO_INSTALL) - set(__cmake_dir "${CMAKE_CURRENT_BINARY_DIR}/cmake") - set(__config_file "${__cmake_dir}/${SUB_PROJ_NAME}Config.cmake") - configure_file(../../FramelessHelperModuleConfig.cmake.in ${__config_file} @ONLY) - set(__targets_file "${__cmake_dir}/${SUB_PROJ_NAME}Targets.cmake") - configure_file(../../FramelessHelperModuleTargets.cmake.in ${__targets_file} @ONLY) - install( - FILES "${__config_file}" "${__targets_file}" - DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${SUB_PROJ_NAME}" - ) - set(__inc_dir "${CMAKE_INSTALL_INCLUDEDIR}/${SUB_PROJ_PATH}") - install( - FILES ${PUBLIC_HEADERS} ${PUBLIC_HEADERS_ALIAS} - DESTINATION "${__inc_dir}" - ) - install( - FILES ${PRIVATE_HEADERS} - DESTINATION "${__inc_dir}/private" - ) - install( - TARGETS ${SUB_MOD_TARGETS} - RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" - LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" - ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" - INCLUDES DESTINATION "${__inc_dir}" + setup_package_export( + TARGET ${SUB_MODULE} + NAMESPACE ${PROJECT_NAME} + PACKAGE_NAME ${PROJECT_NAME} + INCLUDE_DIR ${SUB_MODULE} + PUBLIC_HEADERS ${PUBLIC_HEADERS} + ALIAS_HEADERS ${PUBLIC_HEADERS_ALIAS} + PRIVATE_HEADERS ${PRIVATE_HEADERS} ) endif() if(NOT FRAMELESSHELPER_NO_SUMMARY) - dump_target_info(TARGETS ${SUB_PROJ_NAME}) + dump_target_info(TARGETS ${SUB_MODULE}) endif() diff --git a/src/quick/CMakeLists.txt b/src/quick/CMakeLists.txt index af858e4..80beeae 100644 --- a/src/quick/CMakeLists.txt +++ b/src/quick/CMakeLists.txt @@ -31,11 +31,11 @@ endif() find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS QuickTemplates2 QuickControls2) find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS QuickTemplates2 QuickControls2) -set(SUB_MOD_NAME Quick) -set(SUB_PROJ_NAME ${PROJECT_NAME}${SUB_MOD_NAME}) -set(SUB_PROJ_PATH ${PROJECT_NAME}/${SUB_MOD_NAME}) +set(SUB_MODULE Quick) +set(SUB_MODULE_FULL_NAME ${PROJECT_NAME}${SUB_MODULE}) +set(SUB_MODULE_PATH ${PROJECT_NAME}/${SUB_MODULE}) -set(INCLUDE_PREFIX ../../include/${SUB_PROJ_PATH}) +set(INCLUDE_PREFIX ../../include/${SUB_MODULE_PATH}) set(PUBLIC_HEADERS ${INCLUDE_PREFIX}/framelesshelperquick_global.h @@ -88,18 +88,20 @@ set(SOURCES ) if(WIN32 AND NOT FRAMELESSHELPER_BUILD_STATIC) - set(__rc_path "${CMAKE_CURRENT_BINARY_DIR}/${SUB_PROJ_NAME}.rc") - generate_win32_rc_file( - PATH "${__rc_path}" - VERSION "${PROJECT_VERSION}" - COMPANY "wangwenx190" - DESCRIPTION "${PROJECT_NAME} ${SUB_MOD_NAME} Module" - COPYRIGHT "MIT License" - ORIGINAL_FILENAME "${PROJECT_NAME}${SUB_MOD_NAME}.dll" - PRODUCT "${PROJECT_NAME}" - COMMENTS "Built from commit ${PROJECT_VERSION_COMMIT} on ${PROJECT_COMPILE_DATETIME} (UTC)." - LIBRARY - ) + set(__rc_path "${CMAKE_CURRENT_BINARY_DIR}/${SUB_MODULE_FULL_NAME}.rc") + if(NOT EXISTS "${__rc_path}") + generate_win32_rc_file( + PATH "${__rc_path}" + VERSION "${PROJECT_VERSION}" + COMPANY "wangwenx190" + DESCRIPTION "${PROJECT_NAME} ${SUB_MODULE} Module" + COPYRIGHT "MIT License" + ORIGINAL_FILENAME "${PROJECT_NAME}${SUB_MODULE}.dll" + PRODUCT "${PROJECT_NAME}" + COMMENTS "Built from commit ${PROJECT_VERSION_COMMIT} on ${PROJECT_COMPILE_DATETIME} (UTC)." + LIBRARY + ) + endif() list(APPEND SOURCES "${__rc_path}") endif() @@ -110,58 +112,17 @@ if(FRAMELESSHELPER_BUILD_STATIC) else() set(SUB_MOD_LIB_TYPE "SHARED") endif() -add_library(${SUB_PROJ_NAME} ${SUB_MOD_LIB_TYPE} ${ALL_SOURCES}) -add_library(${PROJECT_NAME}::${SUB_PROJ_NAME} ALIAS ${SUB_PROJ_NAME}) -add_library(${PROJECT_NAME}::${SUB_MOD_NAME} ALIAS ${SUB_PROJ_NAME}) +add_library(${SUB_MODULE} ${SUB_MOD_LIB_TYPE} ${ALL_SOURCES}) +add_library(${SUB_MODULE_FULL_NAME} ALIAS ${SUB_MODULE}) +add_library(${PROJECT_NAME}::${SUB_MODULE} ALIAS ${SUB_MODULE}) +add_library(${PROJECT_NAME}::${SUB_MODULE_FULL_NAME} ALIAS ${SUB_MODULE}) -set_target_properties(${SUB_PROJ_NAME} PROPERTIES +set_target_properties(${SUB_MODULE} PROPERTIES VERSION "${PROJECT_VERSION}" SOVERSION "${PROJECT_VERSION_MAJOR}" + OUTPUT_NAME "${SUB_MODULE_FULL_NAME}" ) -if(WIN32 AND NOT FRAMELESSHELPER_BUILD_STATIC) - set(SUB_MOD_LIB_DIR "${CMAKE_INSTALL_BINDIR}") -else() - set(SUB_MOD_LIB_DIR "${CMAKE_INSTALL_LIBDIR}") -endif() - -set(SUB_MOD_FILE_PREFIX "") -if(NOT MSVC) - set(SUB_MOD_FILE_PREFIX "lib") -endif() -set(SUB_MOD_FILE_SUFFIX "") -set(SUB_MOD_IMPLIB_FILE_SUFFIX "") -if(FRAMELESSHELPER_BUILD_STATIC) - if(MSVC) - set(SUB_MOD_FILE_SUFFIX "lib") - set(SUB_MOD_IMPLIB_FILE_SUFFIX "lib") - else() - set(SUB_MOD_FILE_SUFFIX "a") - set(SUB_MOD_IMPLIB_FILE_SUFFIX "a") - endif() -else() - if(WIN32) - set(SUB_MOD_FILE_SUFFIX "dll") - if(MSVC) - set(SUB_MOD_IMPLIB_FILE_SUFFIX "lib") - else() - set(SUB_MOD_IMPLIB_FILE_SUFFIX "dll.a") - endif() - elseif(APPLE) - set(SUB_MOD_FILE_SUFFIX "dylib") - set(SUB_MOD_IMPLIB_FILE_SUFFIX "a") - else() - set(SUB_MOD_FILE_SUFFIX "so") - set(SUB_MOD_IMPLIB_FILE_SUFFIX "a") - endif() -endif() -set(SUB_MOD_FILE_BASENAME "${SUB_MOD_FILE_PREFIX}${SUB_PROJ_NAME}") -if("x${CMAKE_BUILD_TYPE}" STREQUAL "xDebug") - string(APPEND SUB_MOD_FILE_BASENAME "${CMAKE_DEBUG_POSTFIX}") -endif() -set(SUB_MOD_FILE_NAME "${SUB_MOD_FILE_BASENAME}.${SUB_MOD_FILE_SUFFIX}") -set(SUB_MOD_IMPLIB_FILE_NAME "${SUB_MOD_FILE_BASENAME}.${SUB_MOD_IMPLIB_FILE_SUFFIX}") - set(__import_base_dir "${PROJECT_BINARY_DIR}/imports") if(DEFINED FRAMELESSHELPER_IMPORT_DIR) set(__import_base_dir "${FRAMELESSHELPER_IMPORT_DIR}") @@ -173,7 +134,7 @@ endif() # calculate the generated files, which will also break Ninja Multi-Config # builds. if(QT_VERSION VERSION_GREATER_EQUAL "6.3") - qt_add_qml_module(${SUB_PROJ_NAME} + qt_add_qml_module(${SUB_MODULE} URI "org.wangwenx190.${PROJECT_NAME}" VERSION "1.0" OUTPUT_DIRECTORY "${__import_base_dir}/org/wangwenx190/${PROJECT_NAME}" @@ -193,14 +154,14 @@ if(QT_VERSION VERSION_GREATER_EQUAL "6.3") # and thus it causes linker errors for our users, # so we need this hack here. if(FRAMELESSHELPER_BUILD_STATIC) - target_sources(${SUB_PROJ_NAME} PRIVATE + target_sources(${SUB_MODULE} PRIVATE $ ) endif() endforeach() endif() if(NOT FRAMELESSHELPER_NO_INSTALL) - qt_query_qml_module(${SUB_PROJ_NAME} + qt_query_qml_module(${SUB_MODULE} URI module_uri VERSION module_version PLUGIN_TARGET module_plugin_target @@ -252,72 +213,60 @@ if(QT_VERSION VERSION_GREATER_EQUAL "6.3") endif() if(FRAMELESSHELPER_BUILD_STATIC) - set(__def FRAMELESSHELPER_QUICK_STATIC) - target_compile_definitions(${SUB_PROJ_NAME} PUBLIC ${__def}) - list(APPEND SUB_MOD_DEFS ${__def}) - unset(__def) + target_compile_definitions(${SUB_MODULE} PUBLIC FRAMELESSHELPER_QUICK_STATIC) endif() if(FRAMELESSHELPER_NO_DEBUG_OUTPUT) - target_compile_definitions(${SUB_PROJ_NAME} PRIVATE + target_compile_definitions(${SUB_MODULE} PRIVATE FRAMELESSHELPER_QUICK_NO_DEBUG_OUTPUT ) endif() if(FRAMELESSHELPER_NO_BUNDLE_RESOURCE) - set(__def FRAMELESSHELPER_QUICK_NO_BUNDLE_RESOURCE) - target_compile_definitions(${SUB_PROJ_NAME} PUBLIC ${__def}) - list(APPEND SUB_MOD_DEFS ${__def}) - unset(__def) + target_compile_definitions(${SUB_MODULE} PUBLIC FRAMELESSHELPER_QUICK_NO_BUNDLE_RESOURCE) endif() if(FRAMELESSHELPER_NO_PRIVATE) - set(__def FRAMELESSHELPER_QUICK_NO_PRIVATE) - target_compile_definitions(${SUB_PROJ_NAME} PUBLIC ${__def}) - list(APPEND SUB_MOD_DEFS ${__def}) - unset(__def) + target_compile_definitions(${SUB_MODULE} PUBLIC FRAMELESSHELPER_QUICK_NO_PRIVATE) endif() if(DEFINED FRAMELESSHELPER_NAMESPACE) if("x${FRAMELESSHELPER_NAMESPACE}" STREQUAL "x") message(FATAL_ERROR "FRAMELESSHELPER_NAMESPACE can't be empty!") endif() - set(__def FRAMELESSHELPER_NAMESPACE=${FRAMELESSHELPER_NAMESPACE}) - target_compile_definitions(${SUB_PROJ_NAME} PUBLIC ${__def}) - list(APPEND SUB_MOD_DEFS ${__def}) - unset(__def) + target_compile_definitions(${SUB_MODULE} PUBLIC FRAMELESSHELPER_NAMESPACE=${FRAMELESSHELPER_NAMESPACE}) endif() -target_compile_definitions(${SUB_PROJ_NAME} PRIVATE +target_compile_definitions(${SUB_MODULE} PRIVATE FRAMELESSHELPER_QUICK_LIBRARY ) if(FRAMELESSHELPER_NO_PRIVATE) - target_link_libraries(${SUB_PROJ_NAME} PRIVATE + target_link_libraries(${SUB_MODULE} PRIVATE Qt${QT_VERSION_MAJOR}::Quick ) else() - target_link_libraries(${SUB_PROJ_NAME} PRIVATE + target_link_libraries(${SUB_MODULE} PRIVATE Qt${QT_VERSION_MAJOR}::QuickPrivate Qt${QT_VERSION_MAJOR}::QuickTemplates2Private Qt${QT_VERSION_MAJOR}::QuickControls2Private ) endif() -target_link_libraries(${SUB_PROJ_NAME} PUBLIC +target_link_libraries(${SUB_MODULE} PUBLIC ${PROJECT_NAME}::Core ) -target_include_directories(${SUB_PROJ_NAME} PUBLIC +target_include_directories(${SUB_MODULE} PUBLIC "$" "$" "$" "$" - "$" - "$" + "$" + "$" ) -setup_qt_stuff(TARGETS ${SUB_PROJ_NAME} ALLOW_KEYWORD) +setup_qt_stuff(TARGETS ${SUB_MODULE} ALLOW_KEYWORD) set(__extra_flags) if(NOT FRAMELESSHELPER_NO_PERMISSIVE_CHECKS) list(APPEND __extra_flags PERMISSIVE) @@ -340,35 +289,19 @@ endif() if(FRAMELESSHELPER_FORCE_LTO) list(APPEND __extra_flags FORCE_LTO) endif() -setup_compile_params(TARGETS ${SUB_PROJ_NAME} ${__extra_flags}) +setup_compile_params(TARGETS ${SUB_MODULE} ${__extra_flags}) if(NOT FRAMELESSHELPER_NO_INSTALL) - set(__cmake_dir "${CMAKE_CURRENT_BINARY_DIR}/cmake") - set(__config_file "${__cmake_dir}/${SUB_PROJ_NAME}Config.cmake") - configure_file(../../FramelessHelperModuleConfig.cmake.in ${__config_file} @ONLY) - set(__targets_file "${__cmake_dir}/${SUB_PROJ_NAME}Targets.cmake") - configure_file(../../FramelessHelperModuleTargets.cmake.in ${__targets_file} @ONLY) - install( - FILES "${__config_file}" "${__targets_file}" - DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${SUB_PROJ_NAME}" - ) - set(__inc_dir "${CMAKE_INSTALL_INCLUDEDIR}/${SUB_PROJ_PATH}") - install( - FILES ${PUBLIC_HEADERS} ${PUBLIC_HEADERS_ALIAS} - DESTINATION "${__inc_dir}" - ) - install( - FILES ${PRIVATE_HEADERS} - DESTINATION "${__inc_dir}/private" - ) - install( - TARGETS ${SUB_PROJ_NAME} - RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" - LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" - ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" - INCLUDES DESTINATION "${__inc_dir}" + setup_package_export( + TARGET ${SUB_MODULE} + NAMESPACE ${PROJECT_NAME} + PACKAGE_NAME ${PROJECT_NAME} + INCLUDE_DIR ${SUB_MODULE} + PUBLIC_HEADERS ${PUBLIC_HEADERS} + ALIAS_HEADERS ${PUBLIC_HEADERS_ALIAS} + PRIVATE_HEADERS ${PRIVATE_HEADERS} ) endif() if(NOT FRAMELESSHELPER_NO_SUMMARY) - dump_target_info(TARGETS ${SUB_PROJ_NAME}) + dump_target_info(TARGETS ${SUB_MODULE}) endif() diff --git a/src/widgets/CMakeLists.txt b/src/widgets/CMakeLists.txt index 8b55fae..b39b6bd 100644 --- a/src/widgets/CMakeLists.txt +++ b/src/widgets/CMakeLists.txt @@ -28,11 +28,11 @@ if(FRAMELESSHELPER_ENABLE_UNIVERSAL_BUILD) set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64" CACHE STRING "" FORCE) endif() -set(SUB_MOD_NAME Widgets) -set(SUB_PROJ_NAME ${PROJECT_NAME}${SUB_MOD_NAME}) -set(SUB_PROJ_PATH ${PROJECT_NAME}/${SUB_MOD_NAME}) +set(SUB_MODULE Widgets) +set(SUB_MODULE_FULL_NAME ${PROJECT_NAME}${SUB_MODULE}) +set(SUB_MODULE_PATH ${PROJECT_NAME}/${SUB_MODULE}) -set(INCLUDE_PREFIX ../../include/${SUB_PROJ_PATH}) +set(INCLUDE_PREFIX ../../include/${SUB_MODULE_PATH}) set(PUBLIC_HEADERS ${INCLUDE_PREFIX}/framelesshelperwidgets_global.h @@ -76,18 +76,20 @@ set(SOURCES ) if(WIN32 AND NOT FRAMELESSHELPER_BUILD_STATIC) - set(__rc_path "${CMAKE_CURRENT_BINARY_DIR}/${SUB_PROJ_NAME}.rc") - generate_win32_rc_file( - PATH "${__rc_path}" - VERSION "${PROJECT_VERSION}" - COMPANY "wangwenx190" - DESCRIPTION "${PROJECT_NAME} ${SUB_MOD_NAME} Module" - COPYRIGHT "MIT License" - ORIGINAL_FILENAME "${PROJECT_NAME}${SUB_MOD_NAME}.dll" - PRODUCT "${PROJECT_NAME}" - COMMENTS "Built from commit ${PROJECT_VERSION_COMMIT} on ${PROJECT_COMPILE_DATETIME} (UTC)." - LIBRARY - ) + set(__rc_path "${CMAKE_CURRENT_BINARY_DIR}/${SUB_MODULE_FULL_NAME}.rc") + if(NOT EXISTS "${__rc_path}") + generate_win32_rc_file( + PATH "${__rc_path}" + VERSION "${PROJECT_VERSION}" + COMPANY "wangwenx190" + DESCRIPTION "${PROJECT_NAME} ${SUB_MODULE} Module" + COPYRIGHT "MIT License" + ORIGINAL_FILENAME "${PROJECT_NAME}${SUB_MODULE}.dll" + PRODUCT "${PROJECT_NAME}" + COMMENTS "Built from commit ${PROJECT_VERSION_COMMIT} on ${PROJECT_COMPILE_DATETIME} (UTC)." + LIBRARY + ) + endif() list(APPEND SOURCES "${__rc_path}") endif() @@ -98,117 +100,64 @@ if(FRAMELESSHELPER_BUILD_STATIC) else() set(SUB_MOD_LIB_TYPE "SHARED") endif() -add_library(${SUB_PROJ_NAME} ${SUB_MOD_LIB_TYPE} ${ALL_SOURCES}) -add_library(${PROJECT_NAME}::${SUB_PROJ_NAME} ALIAS ${SUB_PROJ_NAME}) -add_library(${PROJECT_NAME}::${SUB_MOD_NAME} ALIAS ${SUB_PROJ_NAME}) +add_library(${SUB_MODULE} ${SUB_MOD_LIB_TYPE} ${ALL_SOURCES}) +add_library(${SUB_MODULE_FULL_NAME} ALIAS ${SUB_MODULE}) +add_library(${PROJECT_NAME}::${SUB_MODULE} ALIAS ${SUB_MODULE}) +add_library(${PROJECT_NAME}::${SUB_MODULE_FULL_NAME} ALIAS ${SUB_MODULE}) -set_target_properties(${SUB_PROJ_NAME} PROPERTIES +set_target_properties(${SUB_MODULE} PROPERTIES VERSION "${PROJECT_VERSION}" SOVERSION "${PROJECT_VERSION_MAJOR}" + OUTPUT_NAME "${SUB_MODULE_FULL_NAME}" ) -if(WIN32 AND NOT FRAMELESSHELPER_BUILD_STATIC) - set(SUB_MOD_LIB_DIR "${CMAKE_INSTALL_BINDIR}") -else() - set(SUB_MOD_LIB_DIR "${CMAKE_INSTALL_LIBDIR}") -endif() - -set(SUB_MOD_FILE_PREFIX "") -if(NOT MSVC) - set(SUB_MOD_FILE_PREFIX "lib") -endif() -set(SUB_MOD_FILE_SUFFIX "") -set(SUB_MOD_IMPLIB_FILE_SUFFIX "") if(FRAMELESSHELPER_BUILD_STATIC) - if(MSVC) - set(SUB_MOD_FILE_SUFFIX "lib") - set(SUB_MOD_IMPLIB_FILE_SUFFIX "lib") - else() - set(SUB_MOD_FILE_SUFFIX "a") - set(SUB_MOD_IMPLIB_FILE_SUFFIX "a") - endif() -else() - if(WIN32) - set(SUB_MOD_FILE_SUFFIX "dll") - if(MSVC) - set(SUB_MOD_IMPLIB_FILE_SUFFIX "lib") - else() - set(SUB_MOD_IMPLIB_FILE_SUFFIX "dll.a") - endif() - elseif(APPLE) - set(SUB_MOD_FILE_SUFFIX "dylib") - set(SUB_MOD_IMPLIB_FILE_SUFFIX "a") - else() - set(SUB_MOD_FILE_SUFFIX "so") - set(SUB_MOD_IMPLIB_FILE_SUFFIX "a") - endif() -endif() -set(SUB_MOD_FILE_BASENAME "${SUB_MOD_FILE_PREFIX}${SUB_PROJ_NAME}") -if("x${CMAKE_BUILD_TYPE}" STREQUAL "xDebug") - string(APPEND SUB_MOD_FILE_BASENAME "${CMAKE_DEBUG_POSTFIX}") -endif() -set(SUB_MOD_FILE_NAME "${SUB_MOD_FILE_BASENAME}.${SUB_MOD_FILE_SUFFIX}") -set(SUB_MOD_IMPLIB_FILE_NAME "${SUB_MOD_FILE_BASENAME}.${SUB_MOD_IMPLIB_FILE_SUFFIX}") - -if(FRAMELESSHELPER_BUILD_STATIC) - set(__def FRAMELESSHELPER_WIDGETS_STATIC) - target_compile_definitions(${SUB_PROJ_NAME} PUBLIC ${__def}) - list(APPEND SUB_MOD_DEFS ${__def}) - unset(__def) + target_compile_definitions(${SUB_MODULE} PUBLIC FRAMELESSHELPER_WIDGETS_STATIC) endif() if(FRAMELESSHELPER_NO_DEBUG_OUTPUT) - target_compile_definitions(${SUB_PROJ_NAME} PRIVATE + target_compile_definitions(${SUB_MODULE} PRIVATE FRAMELESSHELPER_WIDGETS_NO_DEBUG_OUTPUT ) endif() if(FRAMELESSHELPER_NO_BUNDLE_RESOURCE) - set(__def FRAMELESSHELPER_WIDGETS_NO_BUNDLE_RESOURCE) - target_compile_definitions(${SUB_PROJ_NAME} PUBLIC ${__def}) - list(APPEND SUB_MOD_DEFS ${__def}) - unset(__def) + target_compile_definitions(${SUB_MODULE} PUBLIC FRAMELESSHELPER_WIDGETS_NO_BUNDLE_RESOURCE) endif() if(FRAMELESSHELPER_NO_PRIVATE) - set(__def FRAMELESSHELPER_WIDGETS_NO_PRIVATE) - target_compile_definitions(${SUB_PROJ_NAME} PUBLIC ${__def}) - list(APPEND SUB_MOD_DEFS ${__def}) - unset(__def) + target_compile_definitions(${SUB_MODULE} PUBLIC FRAMELESSHELPER_WIDGETS_NO_PRIVATE) endif() if(DEFINED FRAMELESSHELPER_NAMESPACE) if("x${FRAMELESSHELPER_NAMESPACE}" STREQUAL "x") message(FATAL_ERROR "FRAMELESSHELPER_NAMESPACE can't be empty!") endif() - set(__def FRAMELESSHELPER_NAMESPACE=${FRAMELESSHELPER_NAMESPACE}) - target_compile_definitions(${SUB_PROJ_NAME} PUBLIC ${__def}) - list(APPEND SUB_MOD_DEFS ${__def}) - unset(__def) + target_compile_definitions(${SUB_MODULE} PUBLIC FRAMELESSHELPER_NAMESPACE=${FRAMELESSHELPER_NAMESPACE}) endif() -target_compile_definitions(${SUB_PROJ_NAME} PRIVATE +target_compile_definitions(${SUB_MODULE} PRIVATE FRAMELESSHELPER_WIDGETS_LIBRARY ) -target_link_libraries(${SUB_PROJ_NAME} PRIVATE +target_link_libraries(${SUB_MODULE} PRIVATE Qt${QT_VERSION_MAJOR}::Widgets ) -target_link_libraries(${SUB_PROJ_NAME} PUBLIC +target_link_libraries(${SUB_MODULE} PUBLIC ${PROJECT_NAME}::Core ) -target_include_directories(${SUB_PROJ_NAME} PUBLIC +target_include_directories(${SUB_MODULE} PUBLIC "$" "$" "$" "$" - "$" - "$" + "$" + "$" ) -setup_qt_stuff(TARGETS ${SUB_PROJ_NAME}) +setup_qt_stuff(TARGETS ${SUB_MODULE}) set(__extra_flags) if(NOT FRAMELESSHELPER_NO_PERMISSIVE_CHECKS) list(APPEND __extra_flags PERMISSIVE) @@ -231,35 +180,19 @@ endif() if(FRAMELESSHELPER_FORCE_LTO) list(APPEND __extra_flags FORCE_LTO) endif() -setup_compile_params(TARGETS ${SUB_PROJ_NAME} ${__extra_flags}) +setup_compile_params(TARGETS ${SUB_MODULE} ${__extra_flags}) if(NOT FRAMELESSHELPER_NO_INSTALL) - set(__cmake_dir "${CMAKE_CURRENT_BINARY_DIR}/cmake") - set(__config_file "${__cmake_dir}/${SUB_PROJ_NAME}Config.cmake") - configure_file(../../FramelessHelperModuleConfig.cmake.in ${__config_file} @ONLY) - set(__targets_file "${__cmake_dir}/${SUB_PROJ_NAME}Targets.cmake") - configure_file(../../FramelessHelperModuleTargets.cmake.in ${__targets_file} @ONLY) - install( - FILES "${__config_file}" "${__targets_file}" - DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${SUB_PROJ_NAME}" - ) - set(__inc_dir "${CMAKE_INSTALL_INCLUDEDIR}/${SUB_PROJ_PATH}") - install( - FILES ${PUBLIC_HEADERS} ${PUBLIC_HEADERS_ALIAS} - DESTINATION "${__inc_dir}" - ) - install( - FILES ${PRIVATE_HEADERS} - DESTINATION "${__inc_dir}/private" - ) - install( - TARGETS ${SUB_PROJ_NAME} - RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" - LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" - ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" - INCLUDES DESTINATION "${__inc_dir}" + setup_package_export( + TARGET ${SUB_MODULE} + NAMESPACE ${PROJECT_NAME} + PACKAGE_NAME ${PROJECT_NAME} + INCLUDE_DIR ${SUB_MODULE} + PUBLIC_HEADERS ${PUBLIC_HEADERS} + ALIAS_HEADERS ${PUBLIC_HEADERS_ALIAS} + PRIVATE_HEADERS ${PRIVATE_HEADERS} ) endif() if(NOT FRAMELESSHELPER_NO_SUMMARY) - dump_target_info(TARGETS ${SUB_PROJ_NAME}) + dump_target_info(TARGETS ${SUB_MODULE}) endif()