From 6063a962eb89040d23241224fcde51687d0f1d2d Mon Sep 17 00:00:00 2001 From: Yuhang Zhao <2546789017@qq.com> Date: Fri, 27 Jan 2023 16:26:23 +0800 Subject: [PATCH] simplify cmake scripts Signed-off-by: Yuhang Zhao <2546789017@qq.com> --- .gitmodules | 3 + CMakeLists.txt | 128 ++------- cmake | 1 + examples/dialog/CMakeLists.txt | 17 +- examples/mainwindow/CMakeLists.txt | 17 +- examples/openglwidget/CMakeLists.txt | 26 +- examples/quick/CMakeLists.txt | 28 +- examples/widget/CMakeLists.txt | 17 +- src/core/CMakeLists.txt | 21 +- src/core/VC-LTL.cmake | 94 ------- src/core/cmakehelper.cmake | 385 --------------------------- src/quick/CMakeLists.txt | 81 +++--- src/widgets/CMakeLists.txt | 21 +- 13 files changed, 185 insertions(+), 654 deletions(-) create mode 100644 .gitmodules create mode 160000 cmake delete mode 100644 src/core/VC-LTL.cmake delete mode 100644 src/core/cmakehelper.cmake diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..1328a9e --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "cmake"] + path = cmake + url = https://github.com/wangwenx190/cmake-utils.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 0cd3605..20cd500 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,7 +28,6 @@ project(FramelessHelper VERSION 2.3.5.0 DESCRIPTION "Cross-platform window customization framework for Qt Widgets and Qt Quick." HOMEPAGE_URL "https://github.com/wangwenx190/framelesshelper/" - LANGUAGES CXX ) option(FRAMELESSHELPER_BUILD_STATIC "Build FramelessHelper as a static library." OFF) @@ -51,100 +50,43 @@ if(FRAMELESSHELPER_ENABLE_VCLTL AND NOT MSVC) message(WARNING "VC-LTL is only available for the MSVC toolchain.") endif() -include(GNUInstallDirs) -include(CMakePackageConfigHelpers) +include(cmake/utils.cmake) -if(NOT DEFINED CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE Release) +set(__extra_flags) +if(NOT FRAMELESSHELPER_BUILD_STATIC) + set(__extra_flags ENABLE_LTO) endif() - -if(NOT DEFINED CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE) - # MinGW has many bugs when LTO is enabled, and they are all very - # hard to workaround, so just don't enable LTO at all for MinGW. - if(NOT (MINGW OR FRAMELESSHELPER_BUILD_STATIC)) - set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE ON) - endif() -endif() - -if(NOT DEFINED CMAKE_DEBUG_POSTFIX) - if(WIN32) - set(CMAKE_DEBUG_POSTFIX d) - else() - set(CMAKE_DEBUG_POSTFIX _debug) - endif() -endif() - -if(NOT DEFINED CMAKE_RUNTIME_OUTPUT_DIRECTORY) - set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin") -endif() - -if(NOT DEFINED CMAKE_LIBRARY_OUTPUT_DIRECTORY) - set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib") -endif() - -if(NOT DEFINED CMAKE_ARCHIVE_OUTPUT_DIRECTORY) - set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib") -endif() - -set(CMAKE_POSITION_INDEPENDENT_CODE ON) -set(CMAKE_CXX_VISIBILITY_PRESET hidden) -set(CMAKE_VISIBILITY_INLINES_HIDDEN ON) - -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED ON) -set(CMAKE_CXX_EXTENSIONS OFF) - -set(CMAKE_AUTOUIC ON) -set(CMAKE_AUTOMOC ON) -set(CMAKE_AUTORCC ON) - -set(CMAKE_INCLUDE_CURRENT_DIR ON) +setup_project( + QT_PROJECT + QML_IMPORT_DIR "${PROJECT_BINARY_DIR}/qml" + LANGUAGES CXX RC + ${__extra_flags} +) +unset(__extra_flags) set(PROJECT_VERSION_COMMIT "UNKNOWN") -# Get a git hash value. We do not want to use git command here -# because we don't want to make git a build-time dependency. -if(EXISTS "${PROJECT_SOURCE_DIR}/.git/HEAD") - file(READ "${PROJECT_SOURCE_DIR}/.git/HEAD" PROJECT_VERSION_COMMIT) - string(STRIP "${PROJECT_VERSION_COMMIT}" PROJECT_VERSION_COMMIT) - if(PROJECT_VERSION_COMMIT MATCHES "^ref: (.*)") - set(HEAD "${CMAKE_MATCH_1}") - if(EXISTS "${PROJECT_SOURCE_DIR}/.git/${HEAD}") - file(READ "${PROJECT_SOURCE_DIR}/.git/${HEAD}" PROJECT_VERSION_COMMIT) - string(STRIP "${PROJECT_VERSION_COMMIT}" PROJECT_VERSION_COMMIT) - else() - file(READ "${PROJECT_SOURCE_DIR}/.git/packed-refs" PACKED_REFS) - string(REGEX REPLACE ".*\n([0-9a-f]+) ${HEAD}\n.*" "\\1" PROJECT_VERSION_COMMIT "\n${PACKED_REFS}") - endif() - endif() -endif() +get_commit_hash(RESULT PROJECT_VERSION_COMMIT) set(PROJECT_COMPILE_DATETIME "UNKNOWN") string(TIMESTAMP PROJECT_COMPILE_DATETIME UTC) -if(MSVC) - string(REGEX REPLACE "[-|/]GR-? " " " CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) - string(REGEX REPLACE "[-|/]EHs-?c-? " " " CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) - string(REGEX REPLACE "[-|/]W[0|1|2|3|4|all] " " " CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) - string(APPEND CMAKE_CXX_FLAGS " /GR /EHsc /W4 ") - set(CMAKE_RC_FLAGS "/c65001 /DWIN32 /nologo") - if(MSVC_VERSION GREATER_EQUAL 1920) # Visual Studio 2019 version 16.0 - string(REGEX REPLACE "[-|/]Ob[0|1|2|3] " " " CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE}) - string(APPEND CMAKE_CXX_FLAGS_RELEASE " /Ob3 ") - endif() - if(FRAMELESSHELPER_ENABLE_VCLTL) - include(src/core/VC-LTL.cmake) - if("x${SupportLTL}" STREQUAL "xtrue") - set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" CACHE STRING "" FORCE) - endif() +if(FRAMELESSHELPER_ENABLE_VCLTL AND MSVC) + include(cmake/VC-LTL.cmake) + if("x${SupportLTL}" STREQUAL "xtrue") + set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" CACHE STRING "" FORCE) endif() endif() -if(NOT DEFINED QML_IMPORT_PATH) - set(QML_IMPORT_PATH) +set(__extra_flags) +if(FRAMELESSHELPER_NO_INSTALL) + set(__extra_flags NO_INSTALL) endif() -list(APPEND QML_IMPORT_PATH "${PROJECT_BINARY_DIR}/qml") -list(REMOVE_DUPLICATES QML_IMPORT_PATH) -set(QML_IMPORT_PATH ${QML_IMPORT_PATH} CACHE STRING "Qt Creator extra QML import paths" FORCE) +prepare_package_export( + PACKAGE_NAME ${PROJECT_NAME} + PACKAGE_VERSION ${PROJECT_VERSION} + ${__extra_flags} +) +unset(__extra_flags) find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core Gui) find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Gui) @@ -152,26 +94,6 @@ find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Gui) find_package(QT NAMES Qt6 Qt5 QUIET COMPONENTS Widgets Quick) find_package(Qt${QT_VERSION_MAJOR} QUIET COMPONENTS Widgets Quick) -write_basic_package_version_file( - "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" - VERSION ${PROJECT_VERSION} - COMPATIBILITY AnyNewerVersion -) - -configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}Config.cmake.in - "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" - INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} - NO_CHECK_REQUIRED_COMPONENTS_MACRO -) - -if(NOT FRAMELESSHELPER_NO_INSTALL) - install(FILES - "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" - "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" - DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} - ) -endif() - if(TARGET Qt${QT_VERSION_MAJOR}::Core AND TARGET Qt${QT_VERSION_MAJOR}::Gui) add_subdirectory(src) endif() diff --git a/cmake b/cmake new file mode 160000 index 0000000..d73d3eb --- /dev/null +++ b/cmake @@ -0,0 +1 @@ +Subproject commit d73d3eb267ab2b853d6a60d65572a493858267db diff --git a/examples/dialog/CMakeLists.txt b/examples/dialog/CMakeLists.txt index 922d741..64eea23 100644 --- a/examples/dialog/CMakeLists.txt +++ b/examples/dialog/CMakeLists.txt @@ -47,9 +47,18 @@ target_link_libraries(Dialog PRIVATE FramelessHelper::Widgets ) -include(../../src/core/cmakehelper.cmake) -setup_gui_app(Dialog) -setup_compile_params(Dialog) +include(../../cmake/utils.cmake) +setup_gui_app( + TARGETS Dialog + BUNDLE_ID org.wangwenx190.Dialog + BUNDLE_VERSION 1.0.0 + BUNDLE_VERSION_SHORT 1.0 +) +setup_compile_params(TARGETS Dialog) if(FRAMELESSHELPER_EXAMPLES_DEPLOYQT) - deploy_qt_runtime(Dialog) + set(__extra_flags) + if(FRAMELESSHELPER_NO_INSTALL) + set(__extra_flags NO_INSTALL) + endif() + deploy_qt_runtime(TARGET Dialog ${__extra_flags}) endif() diff --git a/examples/mainwindow/CMakeLists.txt b/examples/mainwindow/CMakeLists.txt index fa4c7ee..3762e13 100644 --- a/examples/mainwindow/CMakeLists.txt +++ b/examples/mainwindow/CMakeLists.txt @@ -52,9 +52,18 @@ target_link_libraries(MainWindow PRIVATE FramelessHelper::Widgets ) -include(../../src/core/cmakehelper.cmake) -setup_gui_app(MainWindow) -setup_compile_params(MainWindow) +include(../../cmake/utils.cmake) +setup_gui_app( + TARGETS MainWindow + BUNDLE_ID org.wangwenx190.MainWindow + BUNDLE_VERSION 1.0.0 + BUNDLE_VERSION_SHORT 1.0 +) +setup_compile_params(TARGETS MainWindow) if(FRAMELESSHELPER_EXAMPLES_DEPLOYQT) - deploy_qt_runtime(MainWindow) + set(__extra_flags) + if(FRAMELESSHELPER_NO_INSTALL) + set(__extra_flags NO_INSTALL) + endif() + deploy_qt_runtime(TARGET MainWindow ${__extra_flags}) endif() diff --git a/examples/openglwidget/CMakeLists.txt b/examples/openglwidget/CMakeLists.txt index a7311dc..93efd01 100644 --- a/examples/openglwidget/CMakeLists.txt +++ b/examples/openglwidget/CMakeLists.txt @@ -25,9 +25,8 @@ find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS OpenGL) find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS OpenGL) -if(${QT_VERSION_MAJOR} GREATER_EQUAL 6) - find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS OpenGLWidgets) - find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS OpenGLWidgets) +if(QT_VERSION_MAJOR GREATER_EQUAL 6) + find_package(Qt6 REQUIRED COMPONENTS OpenGLWidgets) endif() set(SOURCES @@ -61,15 +60,24 @@ target_link_libraries(OpenGLWidget PRIVATE FramelessHelper::Widgets ) -if(${QT_VERSION_MAJOR} GREATER_EQUAL 6) +if(QT_VERSION_MAJOR GREATER_EQUAL 6) target_link_libraries(OpenGLWidget PRIVATE - Qt${QT_VERSION_MAJOR}::OpenGLWidgets + Qt6::OpenGLWidgets ) endif() -include(../../src/core/cmakehelper.cmake) -setup_gui_app(OpenGLWidget) -setup_compile_params(OpenGLWidget) +include(../../cmake/utils.cmake) +setup_gui_app( + TARGETS OpenGLWidget + BUNDLE_ID org.wangwenx190.OpenGLWidget + BUNDLE_VERSION 1.0.0 + BUNDLE_VERSION_SHORT 1.0 +) +setup_compile_params(TARGETS OpenGLWidget) if(FRAMELESSHELPER_EXAMPLES_DEPLOYQT) - deploy_qt_runtime(OpenGLWidget) + set(__extra_flags) + if(FRAMELESSHELPER_NO_INSTALL) + set(__extra_flags NO_INSTALL) + endif() + deploy_qt_runtime(TARGET OpenGLWidget ${__extra_flags}) endif() diff --git a/examples/quick/CMakeLists.txt b/examples/quick/CMakeLists.txt index e46b922..54c19ec 100644 --- a/examples/quick/CMakeLists.txt +++ b/examples/quick/CMakeLists.txt @@ -35,7 +35,7 @@ set(SOURCES quicksettings.cpp ) -if(${QT_VERSION} VERSION_LESS 6.2) +if(QT_VERSION VERSION_LESS "6.2") list(APPEND SOURCES resources.qrc) endif() @@ -49,7 +49,7 @@ endif() add_executable(Quick ${SOURCES}) -if(${QT_VERSION} VERSION_GREATER_EQUAL 6.2) +if(QT_VERSION VERSION_GREATER_EQUAL "6.2") set(QML_SOURCES "qml/Window.qml" "qml/ApplicationWindow.qml" @@ -61,7 +61,7 @@ if(${QT_VERSION} VERSION_GREATER_EQUAL 6.2) qt_add_qml_module(Quick URI Demo VERSION 1.0 - IMPORT_PATH "${PROJECT_BINARY_DIR}/qml" + #IMPORT_PATH "${PROJECT_BINARY_DIR}/qml" OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/qml/Demo" RESOURCE_PREFIX "/" NO_RESOURCE_TARGET_PATH @@ -89,12 +89,22 @@ target_compile_definitions(Quick PRIVATE $<$,$>:QT_QML_DEBUG> ) -include(../../src/core/cmakehelper.cmake) -setup_gui_app(Quick) -setup_compile_params(Quick) +include(../../cmake/utils.cmake) +setup_gui_app( + TARGETS Quick + BUNDLE_ID org.wangwenx190.Quick + BUNDLE_VERSION 1.0.0 + BUNDLE_VERSION_SHORT 1.0 +) +setup_compile_params(TARGETS Quick) if(FRAMELESSHELPER_EXAMPLES_DEPLOYQT) - deploy_qt_runtime(Quick - QML_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}" - #QML_IMPORT_DIR "${PROJECT_BINARY_DIR}/qml" # Some applications failed to start. + set(__extra_flags) + if(FRAMELESSHELPER_NO_INSTALL) + set(__extra_flags NO_INSTALL) + endif() + deploy_qt_runtime( + TARGET Quick + QML_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/qml" + ${__extra_flags} ) endif() diff --git a/examples/widget/CMakeLists.txt b/examples/widget/CMakeLists.txt index 06376ad..c4f71dd 100644 --- a/examples/widget/CMakeLists.txt +++ b/examples/widget/CMakeLists.txt @@ -47,9 +47,18 @@ target_link_libraries(Widget PRIVATE FramelessHelper::Widgets ) -include(../../src/core/cmakehelper.cmake) -setup_gui_app(Widget) -setup_compile_params(Widget) +include(../../cmake/utils.cmake) +setup_gui_app( + TARGETS Widget + BUNDLE_ID org.wangwenx190.Widget + BUNDLE_VERSION 1.0.0 + BUNDLE_VERSION_SHORT 1.0 +) +setup_compile_params(TARGETS Widget) if(FRAMELESSHELPER_EXAMPLES_DEPLOYQT) - deploy_qt_runtime(Widget) + set(__extra_flags) + if(FRAMELESSHELPER_NO_INSTALL) + set(__extra_flags NO_INSTALL) + endif() + deploy_qt_runtime(TARGET Widget ${__extra_flags}) endif() diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 6ea8dc0..ebd7448 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -133,7 +133,6 @@ elseif(UNIX) endif() if(WIN32 AND NOT FRAMELESSHELPER_BUILD_STATIC) - enable_language(RC) configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/framelesshelper.rc.in ${CMAKE_CURRENT_BINARY_DIR}/framelesshelpercore.rc @ONLY) @@ -247,6 +246,20 @@ target_include_directories(${SUB_PROJ_NAME} PUBLIC "$" ) -include(cmakehelper.cmake) -setup_compile_params(${SUB_PROJ_NAME}) -setup_package_export(${SUB_PROJ_NAME} ${SUB_PROJ_PATH} "${PUBLIC_HEADERS}" "${PUBLIC_HEADERS_ALIAS}" "${PRIVATE_HEADERS}") +setup_qt_stuff(TARGETS ${SUB_PROJ_NAME}) +set(__extra_flags) +if(NOT FRAMELESSHELPER_NO_PERMISSIVE_CHECKS) + set(__extra_flags PERMISSIVE) +endif() +setup_compile_params(TARGETS ${SUB_PROJ_NAME} ${__extra_flags}) +if(NOT FRAMELESSHELPER_NO_INSTALL) + setup_package_export( + TARGET ${SUB_PROJ_NAME} + PACKAGE_NAME ${PROJECT_NAME} + NAMESPACE ${PROJECT_NAME} + INCLUDE_PATH ${SUB_PROJ_PATH} + PUBLIC_HEADERS ${PUBLIC_HEADERS} + ALIAS_HEADERS ${PUBLIC_HEADERS_ALIAS} + PRIVATE_HEADERS ${PRIVATE_HEADERS} + ) +endif() diff --git a/src/core/VC-LTL.cmake b/src/core/VC-LTL.cmake deleted file mode 100644 index 2bab2f2..0000000 --- a/src/core/VC-LTL.cmake +++ /dev/null @@ -1,94 +0,0 @@ -# https://github.com/Chuyu-Team/VC-LTL5 - -# -# VC-LTL自动化加载配置,建议你将此文件单独复制到你的工程再使用,该文件能自动识别当前环境是否存在VC-LTL,并且自动应用。 -# -# 使用方法: -# 1. 在“CMakeLists.txt” 添加 “include("VC-LTL helper for cmake.cmake")”。 -# -# VC-LTL默认搜索顺序 -# 1. “VC-LTL helper for cmake.cmake”所在根目录,即 ${CMAKE_CURRENT_LIST_DIR} -# 2. 当前CMake根目录,即 ${CMAKE_CURRENT_SOURCE_DIR}/VC-LTL -# 3. 当前项目根目录,即 ${PROJECT_SOURCE_DIR}/VC-LTL -# 4. 当前CMake父目录,即 ${CMAKE_CURRENT_SOURCE_DIR}/../VC-LTL -# 5. 当前项目根目录,即 ${PROJECT_SOURCE_DIR}/../VC-LTL -# 6. 注册表HKEY_CURRENT_USER\Code\VC-LTL@Root -# -# 把VC-LTL放在其中一个位置即可,VC-LTL就能被自动引用。 -# -# 如果你对默认搜索顺序不满,你可以修改此文件。你也可以直接指定${VC_LTL_Root}宏更加任性的去加载VC-LTL。 -# - -if(NOT MSVC OR DEFINED __VC_LTL_CMAKE_INCLUDE_GUARD) - return() -endif() -set(__VC_LTL_CMAKE_INCLUDE_GUARD 1) - -#####################################################################VC-LTL设置##################################################################### - -#控制TargetPlatform版本,目前可用版本为5.1.2600.0 6.0.6000.0(默认) 6.2.9200.0 10.0.10240.0 10.0.19041.0 -if(NOT DEFINED WindowsTargetPlatformMinVersion) - set(WindowsTargetPlatformMinVersion "10.0.19041.0" CACHE STRING "" FORCE) -endif() - -#启用干净的导入表,消除 ucrt apiset(如:api-ms-win-crt-time-l1-1-0.dll),满足强迫症患者。 -if(NOT DEFINED CleanImport) - set(CleanImport "true" CACHE STRING "" FORCE) -endif() - -#################################################################################################################################################### - -if(NOT VC_LTL_Root) - if(EXISTS ${CMAKE_CURRENT_LIST_DIR}/_msvcrt.h) - set(VC_LTL_Root ${CMAKE_CURRENT_LIST_DIR}) - endif() -endif() - -if(NOT VC_LTL_Root) - if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/VC-LTL/_msvcrt.h) - set(VC_LTL_Root ${CMAKE_CURRENT_SOURCE_DIR}/VC-LTL) - endif() -endif() - -if(NOT VC_LTL_Root) - if(EXISTS ${PROJECT_SOURCE_DIR}/VC-LTL/_msvcrt.h) - set(VC_LTL_Root ${PROJECT_SOURCE_DIR}/VC-LTL) - endif() -endif() - -if(NOT VC_LTL_Root) - if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../VC-LTL/_msvcrt.h) - set(VC_LTL_Root ${CMAKE_CURRENT_SOURCE_DIR}/../VC-LTL) - endif() -endif() - -if(NOT VC_LTL_Root) - if(EXISTS ${PROJECT_SOURCE_DIR}/../VC-LTL/_msvcrt.h) - set(VC_LTL_Root ${PROJECT_SOURCE_DIR}/../VC-LTL) - endif() -endif() - -if(NOT VC_LTL_Root) - EXECUTE_PROCESS(COMMAND reg query "HKEY_CURRENT_USER\\Code\\VC-LTL" -v "Root" - OUTPUT_VARIABLE FOUND_FILE - ERROR_VARIABLE ERROR_INFO - ) - - string(REGEX MATCH "[a-zA-Z]:\\\\.+\\\\" - FOUND_LTL - ${FOUND_FILE}) - if (NOT ${FOUND_LTL} STREQUAL "") - set(VC_LTL_Root ${FOUND_LTL}) - endif() - - if(NOT DEFINED VC_LTL_Root) - string(REGEX MATCH "\\\\\\\\.+\\\\" FOUND_LTL ${FOUND_FILE}) - if (NOT ${FOUND_LTL} STREQUAL "") - set(VC_LTL_Root ${FOUND_LTL}) - endif() - endif() -endif() - -if(VC_LTL_Root) - include("${VC_LTL_Root}\\config\\config.cmake") -endif() diff --git a/src/core/cmakehelper.cmake b/src/core/cmakehelper.cmake deleted file mode 100644 index f0bc76c..0000000 --- a/src/core/cmakehelper.cmake +++ /dev/null @@ -1,385 +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. -]] - -function(setup_compile_params arg_target) - target_compile_definitions(${arg_target} PRIVATE - QT_NO_CAST_TO_ASCII - QT_NO_CAST_FROM_ASCII - QT_NO_CAST_FROM_BYTEARRAY - QT_NO_URL_CAST_FROM_STRING - QT_NO_NARROWING_CONVERSIONS_IN_CONNECT - QT_NO_FOREACH - #QT_TYPESAFE_FLAGS # QtQuick private headers prevent us from enabling this flag. - QT_USE_QSTRINGBUILDER - QT_USE_FAST_OPERATOR_PLUS - QT_DEPRECATED_WARNINGS # Have no effect since 6.0 - QT_DEPRECATED_WARNINGS_SINCE=0x070000 - QT_WARN_DEPRECATED_UP_TO=0x070000 # Since 6.5 - QT_DISABLE_DEPRECATED_BEFORE=0x070000 - QT_DISABLE_DEPRECATED_UP_TO=0x070000 # Since 6.5 - ) - if(NOT (DEFINED __DONT_DISABLE_QT_KEYWORDS AND __DONT_DISABLE_QT_KEYWORDS)) - target_compile_definitions(${arg_target} PRIVATE - QT_NO_KEYWORDS # Some QtQuick private headers still use the traditional Qt keywords. - ) - endif() - if(WIN32) # Needed by both MSVC and MinGW, otherwise some APIs we need will be invisible. - set(_WIN32_WINNT_WIN10 0x0A00) - set(NTDDI_WIN10_NI 0x0A00000C) - target_compile_definitions(${arg_target} PRIVATE - WINVER=${_WIN32_WINNT_WIN10} _WIN32_WINNT=${_WIN32_WINNT_WIN10} - _WIN32_IE=${_WIN32_WINNT_WIN10} NTDDI_VERSION=${NTDDI_WIN10_NI} - ) - else() - target_compile_definitions(${arg_target} PRIVATE - QT_STRICT_ITERATORS # On Windows we need to re-compile Qt with this flag enabled, so only enable it on non-Windows platforms. - ) - endif() - if(MSVC) - target_compile_definitions(${arg_target} PRIVATE - _CRT_NON_CONFORMING_SWPRINTFS _CRT_SECURE_NO_WARNINGS - _CRT_SECURE_NO_DEPRECATE _CRT_NONSTDC_NO_WARNINGS - _CRT_NONSTDC_NO_DEPRECATE _SCL_SECURE_NO_WARNINGS - _SCL_SECURE_NO_DEPRECATE _ENABLE_EXTENDED_ALIGNED_STORAGE - _USE_MATH_DEFINES NOMINMAX UNICODE _UNICODE - WIN32_LEAN_AND_MEAN WINRT_LEAN_AND_MEAN - ) - target_compile_options(${arg_target} PRIVATE - /bigobj /utf-8 $<$>:/fp:fast /GT /Gw /Gy /guard:cf /Zc:inline> - ) - target_link_options(${arg_target} PRIVATE - $<$>:/OPT:REF /OPT:ICF /OPT:LBR /GUARD:CF> - /DYNAMICBASE /NXCOMPAT /LARGEADDRESSAWARE /WX - ) - set(__target_type "UNKNOWN") - get_target_property(__target_type ${arg_target} TYPE) - if(__target_type STREQUAL "EXECUTABLE") - target_compile_options(${arg_target} PRIVATE $<$>:/GA>) - target_link_options(${arg_target} PRIVATE /TSAWARE) - endif() - if(CMAKE_SIZEOF_VOID_P EQUAL 4) - target_link_options(${arg_target} PRIVATE /SAFESEH) - endif() - if(CMAKE_SIZEOF_VOID_P EQUAL 8) - target_link_options(${arg_target} PRIVATE /HIGHENTROPYVA) - endif() - if(MSVC_VERSION GREATER_EQUAL 1915) # Visual Studio 2017 version 15.8 - target_compile_options(${arg_target} PRIVATE $<$,$>:/JMC>) - endif() - if(MSVC_VERSION GREATER_EQUAL 1920) # Visual Studio 2019 version 16.0 - target_link_options(${arg_target} PRIVATE $<$>:/CETCOMPAT>) - if(CMAKE_SIZEOF_VOID_P EQUAL 8) - target_compile_options(${arg_target} PRIVATE /d2FH4) - endif() - endif() - if(MSVC_VERSION GREATER_EQUAL 1925) # Visual Studio 2019 version 16.5 - target_compile_options(${arg_target} PRIVATE $<$>:/QIntel-jcc-erratum>) # /Qspectre-load - #elseif(MSVC_VERSION GREATER_EQUAL 1912) # Visual Studio 2017 version 15.5 - # target_compile_options(${arg_target} PRIVATE /Qspectre) - endif() - #if((MSVC_VERSION GREATER_EQUAL 1927) AND (CMAKE_SIZEOF_VOID_P EQUAL 8)) # Visual Studio 2019 version 16.7 - # target_compile_options(${arg_target} PRIVATE $<$>:/guard:ehcont>) - # target_link_options(${arg_target} PRIVATE $<$>:/guard:ehcont>) - #endif() - if(MSVC_VERSION GREATER_EQUAL 1929) # Visual Studio 2019 version 16.10 - target_compile_options(${arg_target} PRIVATE /await:strict) - elseif(MSVC_VERSION GREATER_EQUAL 1900) # Visual Studio 2015 - target_compile_options(${arg_target} PRIVATE /await) - endif() - if(MSVC_VERSION GREATER_EQUAL 1930) # Visual Studio 2022 version 17.0 - target_compile_options(${arg_target} PRIVATE /options:strict) - endif() - if(NOT FRAMELESSHELPER_NO_PERMISSIVE_CHECKS) - target_compile_options(${arg_target} PRIVATE - /Zc:auto /Zc:forScope /Zc:implicitNoexcept /Zc:noexceptTypes /Zc:referenceBinding - /Zc:rvalueCast /Zc:sizedDealloc /Zc:strictStrings /Zc:throwingNew /Zc:trigraphs - /Zc:wchar_t - ) - if(MSVC_VERSION GREATER_EQUAL 1900) # Visual Studio 2015 - target_compile_options(${arg_target} PRIVATE /Zc:threadSafeInit) - endif() - if(MSVC_VERSION GREATER_EQUAL 1910) # Visual Studio 2017 version 15.0 - target_compile_options(${arg_target} PRIVATE /permissive- /Zc:ternary) - endif() - if(MSVC_VERSION GREATER_EQUAL 1912) # Visual Studio 2017 version 15.5 - target_compile_options(${arg_target} PRIVATE /Zc:alignedNew) - endif() - if(MSVC_VERSION GREATER_EQUAL 1913) # Visual Studio 2017 version 15.6 - target_compile_options(${arg_target} PRIVATE /Zc:externConstexpr) - endif() - if(MSVC_VERSION GREATER_EQUAL 1914) # Visual Studio 2017 version 15.7 - target_compile_options(${arg_target} PRIVATE /Zc:__cplusplus) - endif() - if(MSVC_VERSION GREATER_EQUAL 1921) # Visual Studio 2019 version 16.1 - target_compile_options(${arg_target} PRIVATE /Zc:char8_t) - endif() - if(MSVC_VERSION GREATER_EQUAL 1923) # Visual Studio 2019 version 16.3 - target_compile_options(${arg_target} PRIVATE /Zc:externC) - endif() - if(MSVC_VERSION GREATER_EQUAL 1924) # Visual Studio 2019 version 16.4 - target_compile_options(${arg_target} PRIVATE /Zc:hiddenFriend) - endif() - if(MSVC_VERSION GREATER_EQUAL 1925) # Visual Studio 2019 version 16.5 - target_compile_options(${arg_target} PRIVATE /Zc:preprocessor /Zc:tlsGuards) - endif() - if(MSVC_VERSION GREATER_EQUAL 1928) # Visual Studio 2019 version 16.8 & 16.9 - target_compile_options(${arg_target} PRIVATE /Zc:lambda /Zc:zeroSizeArrayNew) - endif() - if(MSVC_VERSION GREATER_EQUAL 1931) # Visual Studio 2022 version 17.1 - target_compile_options(${arg_target} PRIVATE /Zc:static_assert) - endif() - if(MSVC_VERSION GREATER_EQUAL 1932) # Visual Studio 2022 version 17.2 - target_compile_options(${arg_target} PRIVATE /Zc:__STDC__) - endif() - if(MSVC_VERSION GREATER_EQUAL 1934) # Visual Studio 2022 version 17.4 - target_compile_options(${arg_target} PRIVATE /Zc:enumTypes /Zc:gotoScope /Zc:nrvo) - endif() - if(MSVC_VERSION GREATER_EQUAL 1935) # Visual Studio 2022 version 17.5 - target_compile_options(${arg_target} PRIVATE /Zc:templateScope /Zc:checkGwOdr) - endif() - endif() - else() - target_compile_options(${arg_target} PRIVATE - -Wall -Wextra -Werror - $<$>:-ffunction-sections -fdata-sections> # -fcf-protection=full? -Wa,-mno-branches-within-32B-boundaries? - ) - if(APPLE) - target_link_options(${arg_target} PRIVATE - $<$>:-Wl,-dead_strip> - ) - else() - target_link_options(${arg_target} PRIVATE - $<$>:-Wl,--gc-sections> - ) - endif() - endif() -endfunction() - -function(setup_gui_app arg_target) - set_target_properties(${arg_target} PROPERTIES - WIN32_EXECUTABLE TRUE - MACOSX_BUNDLE TRUE - MACOSX_BUNDLE_GUI_IDENTIFIER org.wangwenx190.${arg_target} - MACOSX_BUNDLE_BUNDLE_VERSION 1.0.0.0 - MACOSX_BUNDLE_SHORT_VERSION_STRING 1.0 - ) -endfunction() - -function(setup_package_export arg_target arg_path arg_public arg_alias arg_private) - if(FRAMELESSHELPER_NO_INSTALL) - return() - endif() - include(GNUInstallDirs) - set(__targets ${arg_target}) - if(TARGET ${arg_target}_resources_1) - list(APPEND __targets ${arg_target}_resources_1) # Ugly hack to workaround a CMake configure error. - endif() - install(TARGETS ${__targets} - EXPORT ${arg_target}Targets - RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" - LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" - ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" - INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${arg_path}" - ) - export(EXPORT ${arg_target}Targets - FILE "${CMAKE_CURRENT_BINARY_DIR}/cmake/${arg_target}Targets.cmake" - NAMESPACE ${PROJECT_NAME}:: - ) - install(FILES ${arg_public} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${arg_path}") - install(FILES ${arg_alias} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${arg_path}") - install(FILES ${arg_private} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${arg_path}/private") - install(EXPORT ${arg_target}Targets - FILE ${arg_target}Targets.cmake - NAMESPACE ${PROJECT_NAME}:: - DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" - ) -endfunction() - -function(deploy_qt_runtime arg_target) - if(NOT (DEFINED Qt5_FOUND OR DEFINED Qt6_FOUND)) - find_package(QT NAMES Qt6 Qt5 QUIET COMPONENTS Core) - endif() - if(NOT (Qt5_FOUND OR Qt6_FOUND)) - message("You need to install the QtCore module first to be able to deploy the Qt libraries.") - return() - endif() - find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core) - if(NOT DEFINED QT_QMAKE_EXECUTABLE) # QT_QMAKE_EXECUTABLE is usually defined by QtCreator. - get_target_property(QT_QMAKE_EXECUTABLE Qt::qmake IMPORTED_LOCATION) - endif() - if(NOT EXISTS "${QT_QMAKE_EXECUTABLE}") - message("Cannot find the QMake executable.") - return() - endif() - get_filename_component(QT_BIN_DIRECTORY "${QT_QMAKE_EXECUTABLE}" DIRECTORY) - find_program(QT_DEPLOY_EXECUTABLE NAMES windeployqt macdeployqt HINTS "${QT_BIN_DIRECTORY}") - if(NOT EXISTS "${QT_DEPLOY_EXECUTABLE}") - message("Cannot find the deployqt tool.") - return() - endif() - set(__is_quick_app FALSE) - cmake_parse_arguments(DEPLOY_QT_RUNTIME_ARGS "" "QML_SOURCE_DIR;QML_IMPORT_DIR" "" ${ARGN}) - if(WIN32) - set(__old_deploy_params) - if(${QT_VERSION_MAJOR} LESS 6) - set(__old_deploy_params --no-webkit2 --no-angle) - endif() - set(__quick_deploy_params) - if(DEFINED DEPLOY_QT_RUNTIME_ARGS_QML_SOURCE_DIR) - set(__is_quick_app TRUE) - set(__quick_deploy_params - --dir "$/qml" - --qmldir "${DEPLOY_QT_RUNTIME_ARGS_QML_SOURCE_DIR}" - ) - endif() - if(DEFINED DEPLOY_QT_RUNTIME_ARGS_QML_IMPORT_DIR) - set(__is_quick_app TRUE) - set(__quick_deploy_params - ${__quick_deploy_params} - --qmlimport "${DEPLOY_QT_RUNTIME_ARGS_QML_IMPORT_DIR}" - ) - endif() - add_custom_command(TARGET ${arg_target} POST_BUILD COMMAND - "${QT_DEPLOY_EXECUTABLE}" - $<$:--debug> - $<$,$,$>:--release> - --libdir "$" - --plugindir "$/plugins" - --no-translations - --no-system-d3d-compiler - --no-virtualkeyboard - --no-compiler-runtime - --no-opengl-sw - --force - --verbose 0 - ${__quick_deploy_params} - ${__old_deploy_params} - "$" - ) - elseif(APPLE) - set(__quick_deploy_params) - if(DEFINED DEPLOY_QT_RUNTIME_ARGS_QML_SOURCE_DIR) - set(__is_quick_app TRUE) - set(__quick_deploy_params - -qmldir="${DEPLOY_QT_RUNTIME_ARGS_QML_SOURCE_DIR}" - -qmlimport="${PROJECT_BINARY_DIR}/qml" - ) - endif() - if(DEFINED DEPLOY_QT_RUNTIME_ARGS_QML_IMPORT_DIR) - set(__is_quick_app TRUE) - set(__quick_deploy_params - ${__quick_deploy_params} - -qmlimport="${DEPLOY_QT_RUNTIME_ARGS_QML_IMPORT_DIR}" - ) - endif() - add_custom_command(TARGET ${arg_target} POST_BUILD COMMAND - "${QT_DEPLOY_EXECUTABLE}" - "$" - -verbose=0 - ${__quick_deploy_params} - ) - elseif(UNIX) - # TODO - endif() - if(NOT FRAMELESSHELPER_NO_INSTALL) - include(GNUInstallDirs) - install(TARGETS ${arg_target} - BUNDLE DESTINATION . - RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" - ) - if(QT_VERSION VERSION_GREATER_EQUAL "6.3") - set(__deploy_script) - if(${__is_quick_app}) - qt_generate_deploy_qml_app_script( - TARGET ${arg_target} - FILENAME_VARIABLE __deploy_script - #MACOS_BUNDLE_POST_BUILD - NO_UNSUPPORTED_PLATFORM_ERROR - DEPLOY_USER_QML_MODULES_ON_UNSUPPORTED_PLATFORM - ) - else() - qt_generate_deploy_app_script( - TARGET ${arg_target} - FILENAME_VARIABLE __deploy_script - NO_UNSUPPORTED_PLATFORM_ERROR - ) - endif() - install(SCRIPT "${__deploy_script}") - endif() - endif() -endfunction() - -function(setup_translations arg_target) - # Qt5's CMake functions to create translations lack many features - # we need and what's worse, they also have a severe bug which will - # wipe out our .ts files' contents every time we call them, so we - # really can't use them until Qt6 (the functions have been completely - # re-written in Qt6 and according to my experiments they work reliably - # now finally). - if(NOT DEFINED Qt6LinguistTools_FOUND) - find_package(Qt6 QUIET COMPONENTS LinguistTools) - endif() - if(NOT Qt6LinguistTools_FOUND) - message("You need to install the Qt Linguist Tools first to be able to create translations.") - return() - endif() - cmake_parse_arguments(TRANSLATION_ARGS "" "TS_DIR;QM_DIR;INSTALL_DIR" "LOCALES" ${ARGN}) - if(NOT DEFINED TRANSLATION_ARGS_LOCALES) - message("You need to specify at least one locale.") - return() - endif() - set(__ts_dir translations) - if(DEFINED TRANSLATION_ARGS_TS_DIR) - set(__ts_dir "${TRANSLATION_ARGS_TS_DIR}") - endif() - set(__qm_dir "${PROJECT_BINARY_DIR}/translations") - if(DEFINED TRANSLATION_ARGS_QM_DIR) - set(__qm_dir "${TRANSLATION_ARGS_QM_DIR}") - endif() - set(__ts_files) - foreach(__locale ${TRANSLATION_ARGS_LOCALES}) - list(APPEND __ts_files "${__ts_dir}/${arg_target}_${__locale}.ts") - endforeach() - set_source_files_properties(${__ts_files} PROPERTIES - OUTPUT_LOCATION "${__qm_dir}" - ) - set(__qm_files) - qt_add_translations(${arg_target} - TS_FILES ${__ts_files} - QM_FILES_OUTPUT_VARIABLE __qm_files - LUPDATE_OPTIONS - -no-obsolete # Don't keep vanished translation contexts. - LRELEASE_OPTIONS - -compress # Compress the QM file if the file size can be decreased siginificantly. - -nounfinished # Don't include unfinished translations (to save file size). - -removeidentical # Don't include translations that are the same with their original texts (to save file size). - ) - if(NOT FRAMELESSHELPER_NO_INSTALL) - set(__inst_dir translations) - if(DEFINED TRANSLATION_ARGS_INSTALL_DIR) - set(__inst_dir "${TRANSLATION_ARGS_INSTALL_DIR}") - endif() - install(FILES ${__qm_files} DESTINATION "${__inst_dir}") - endif() -endfunction() diff --git a/src/quick/CMakeLists.txt b/src/quick/CMakeLists.txt index 43414d5..410ce70 100644 --- a/src/quick/CMakeLists.txt +++ b/src/quick/CMakeLists.txt @@ -82,7 +82,6 @@ set(SOURCES ) if(WIN32 AND NOT FRAMELESSHELPER_BUILD_STATIC) - enable_language(RC) configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/../core/framelesshelper.rc.in ${CMAKE_CURRENT_BINARY_DIR}/framelesshelperquick.rc @ONLY) @@ -108,7 +107,7 @@ endif() set(__import_uri org/wangwenx190/${PROJECT_NAME}) set(__import_dir ${__import_base_dir}/${__import_uri}) -if(${QT_VERSION} VERSION_GREATER_EQUAL 6.2) +if(QT_VERSION VERSION_GREATER_EQUAL "6.2") qt_add_qml_module(${SUB_PROJ_NAME} URI org.wangwenx190.${PROJECT_NAME} VERSION 1.0 @@ -119,36 +118,38 @@ if(${QT_VERSION} VERSION_GREATER_EQUAL 6.2) QtQuick/auto QtQuick.Controls.Basic/auto ) - set(__lib_prefix) - if(UNIX) - set(__lib_prefix lib) - endif() - set(__lib_suffix) - if(CMAKE_BUILD_TYPE STREQUAL "Debug") - set(__lib_suffix ${CMAKE_DEBUG_POSTFIX}) - endif() - set(__lib_ext) - if(FRAMELESSHELPER_BUILD_STATIC) - if(WIN32) - set(__lib_ext lib) + if(NOT FRAMELESSHELPER_NO_INSTALL) + set(__lib_prefix) + if(UNIX) + set(__lib_prefix lib) + endif() + set(__lib_suffix) + if(CMAKE_BUILD_TYPE STREQUAL "Debug") + set(__lib_suffix ${CMAKE_DEBUG_POSTFIX}) + endif() + set(__lib_ext) + if(FRAMELESSHELPER_BUILD_STATIC) + if(WIN32) + set(__lib_ext lib) + else() + set(__lib_ext a) + endif() else() - set(__lib_ext a) - endif() - else() - if(WIN32) - set(__lib_ext dll) - elseif(APPLE) - set(__lib_ext dylib) - elseif(UNIX) - set(__lib_ext so) + if(WIN32) + set(__lib_ext dll) + elseif(APPLE) + set(__lib_ext dylib) + elseif(UNIX) + set(__lib_ext so) + endif() endif() + install(FILES + "${__import_dir}/qmldir" + "${__import_dir}/${SUB_PROJ_NAME}.qmltypes" + "${__import_dir}/${__lib_prefix}${SUB_PROJ_NAME}plugin${__lib_suffix}.${__lib_ext}" + DESTINATION "${CMAKE_INSTALL_PREFIX}/qml/${__import_uri}" + ) endif() - install(FILES - "${__import_dir}/qmldir" - "${__import_dir}/${SUB_PROJ_NAME}.qmltypes" - "${__import_dir}/${__lib_prefix}${SUB_PROJ_NAME}plugin${__lib_suffix}.${__lib_ext}" - DESTINATION ${CMAKE_INSTALL_PREFIX}/qml/${__import_uri} - ) endif() if(FRAMELESSHELPER_BUILD_STATIC) @@ -204,8 +205,20 @@ target_include_directories(${SUB_PROJ_NAME} PUBLIC "$" ) -set(__DONT_DISABLE_QT_KEYWORDS ON) - -include(../core/cmakehelper.cmake) -setup_compile_params(${SUB_PROJ_NAME}) -setup_package_export(${SUB_PROJ_NAME} ${SUB_PROJ_PATH} "${PUBLIC_HEADERS}" "${PUBLIC_HEADERS_ALIAS}" "${PRIVATE_HEADERS}") +setup_qt_stuff(TARGETS ${SUB_PROJ_NAME} ALLOW_KEYWORD) +set(__extra_flags) +if(NOT FRAMELESSHELPER_NO_PERMISSIVE_CHECKS) + set(__extra_flags PERMISSIVE) +endif() +setup_compile_params(TARGETS ${SUB_PROJ_NAME} ${__extra_flags}) +if(NOT FRAMELESSHELPER_NO_INSTALL) + setup_package_export( + TARGET ${SUB_PROJ_NAME} + PACKAGE_NAME ${PROJECT_NAME} + NAMESPACE ${PROJECT_NAME} + INCLUDE_PATH ${SUB_PROJ_PATH} + PUBLIC_HEADERS ${PUBLIC_HEADERS} + ALIAS_HEADERS ${PUBLIC_HEADERS_ALIAS} + PRIVATE_HEADERS ${PRIVATE_HEADERS} + ) +endif() diff --git a/src/widgets/CMakeLists.txt b/src/widgets/CMakeLists.txt index 313b2e8..9b95b73 100644 --- a/src/widgets/CMakeLists.txt +++ b/src/widgets/CMakeLists.txt @@ -70,7 +70,6 @@ set(SOURCES ) if(WIN32 AND NOT FRAMELESSHELPER_BUILD_STATIC) - enable_language(RC) configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/../core/framelesshelper.rc.in ${CMAKE_CURRENT_BINARY_DIR}/framelesshelperwidgets.rc @ONLY) @@ -134,6 +133,20 @@ target_include_directories(${SUB_PROJ_NAME} PUBLIC "$" ) -include(../core/cmakehelper.cmake) -setup_compile_params(${SUB_PROJ_NAME}) -setup_package_export(${SUB_PROJ_NAME} ${SUB_PROJ_PATH} "${PUBLIC_HEADERS}" "${PUBLIC_HEADERS_ALIAS}" "${PRIVATE_HEADERS}") +setup_qt_stuff(TARGETS ${SUB_PROJ_NAME}) +set(__extra_flags) +if(NOT FRAMELESSHELPER_NO_PERMISSIVE_CHECKS) + set(__extra_flags PERMISSIVE) +endif() +setup_compile_params(TARGETS ${SUB_PROJ_NAME} ${__extra_flags}) +if(NOT FRAMELESSHELPER_NO_INSTALL) + setup_package_export( + TARGET ${SUB_PROJ_NAME} + PACKAGE_NAME ${PROJECT_NAME} + NAMESPACE ${PROJECT_NAME} + INCLUDE_PATH ${SUB_PROJ_PATH} + PUBLIC_HEADERS ${PUBLIC_HEADERS} + ALIAS_HEADERS ${PUBLIC_HEADERS_ALIAS} + PRIVATE_HEADERS ${PRIVATE_HEADERS} + ) +endif()