cmake: improve the package code
Signed-off-by: Yuhang Zhao <2546789017@qq.com>
This commit is contained in:
parent
a375bc6748
commit
9a81cf1503
|
@ -148,8 +148,9 @@ if(NOT FRAMELESSHELPER_NO_SUMMARY)
|
|||
set(__qt_inst_dir "${Qt5_DIR}")
|
||||
endif()
|
||||
# /whatever/Qt/6.4.0/gcc_64/lib/cmake/Qt6
|
||||
set(__qt_inst_dir ${__qt_inst_dir}/../../..)
|
||||
cmake_path(NORMAL_PATH __qt_inst_dir)
|
||||
cmake_path(GET __qt_inst_dir PARENT_PATH __qt_inst_dir)
|
||||
cmake_path(GET __qt_inst_dir PARENT_PATH __qt_inst_dir)
|
||||
cmake_path(GET __qt_inst_dir PARENT_PATH __qt_inst_dir)
|
||||
message("Qt install dir: ${__qt_inst_dir}")
|
||||
message("Qt version: ${QT_VERSION}")
|
||||
get_target_property(__qt_type Qt${QT_VERSION_MAJOR}::Core TYPE)
|
||||
|
|
|
@ -27,9 +27,24 @@
|
|||
set(_@PROJECT_NAME@_supported_components Core Widgets Quick)
|
||||
|
||||
foreach(_comp ${@PROJECT_NAME@_FIND_COMPONENTS})
|
||||
if(NOT _comp IN_LIST _@PROJECT_NAME@_supported_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)
|
||||
else()
|
||||
set(@PROJECT_NAME@_FOUND FALSE)
|
||||
set(@PROJECT_NAME@_NOT_FOUND_MESSAGE "Unsupported component: ${_comp}")
|
||||
endif()
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@${_comp}Targets.cmake")
|
||||
endforeach()
|
||||
|
||||
if(NOT DEFINED @PROJECT_NAME@_FOUND)
|
||||
set(@PROJECT_NAME@_FOUND TRUE)
|
||||
set(@PROJECT_NAME@_VERSION "@PROJECT_VERSION@")
|
||||
set(@PROJECT_NAME@_VERSION_MAJOR "@PROJECT_VERSION_MAJOR@")
|
||||
set(@PROJECT_NAME@_VERSION_MINOR "@PROJECT_VERSION_MINOR@")
|
||||
set(@PROJECT_NAME@_VERSION_PATCH "@PROJECT_VERSION_PATCH@")
|
||||
set(@PROJECT_NAME@_VERSION_TWEAK "@PROJECT_VERSION_TWEAK@")
|
||||
endif()
|
||||
|
|
|
@ -0,0 +1,59 @@
|
|||
#[[
|
||||
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()
|
|
@ -0,0 +1,49 @@
|
|||
#[[
|
||||
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_FILE_BASENAME@.lib"
|
||||
VERSION "@PROJECT_VERSION@"
|
||||
SOVERSION "@PROJECT_VERSION_MAJOR@"
|
||||
)
|
||||
unset(__import_prefix)
|
||||
endif()
|
|
@ -193,6 +193,11 @@ QT_END_NAMESPACE
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifndef FRAMELESSHELPER_CORE_NO_BUNDLE_RESOURCE
|
||||
// Call this function in your main() function if you built FramelessHelper as a static library.
|
||||
extern "C" FRAMELESSHELPER_CORE_API void framelesshelpercore_initResource();
|
||||
#endif // FRAMELESSHELPER_CORE_NO_BUNDLE_RESOURCE
|
||||
|
||||
FRAMELESSHELPER_BEGIN_NAMESPACE
|
||||
|
||||
#include "framelesshelper.version"
|
||||
|
|
|
@ -154,13 +154,54 @@ endif()
|
|||
set(ALL_SOURCES ${PUBLIC_HEADERS} ${PRIVATE_HEADERS} ${SOURCES})
|
||||
|
||||
if(FRAMELESSHELPER_BUILD_STATIC)
|
||||
set(SUB_MOD_LIB_TYPE "STATIC")
|
||||
set(SUB_MOD_LIB_DIR "lib")
|
||||
add_library(${SUB_PROJ_NAME} STATIC ${ALL_SOURCES})
|
||||
add_library(${SUB_PROJ_NAME}_static ALIAS ${SUB_PROJ_NAME})
|
||||
else()
|
||||
set(SUB_MOD_LIB_TYPE "SHARED")
|
||||
set(SUB_MOD_LIB_DIR "bin")
|
||||
add_library(${SUB_PROJ_NAME} SHARED ${ALL_SOURCES})
|
||||
add_library(${SUB_PROJ_NAME}_shared ALIAS ${SUB_PROJ_NAME})
|
||||
endif()
|
||||
add_library(${PROJECT_NAME}::${SUB_PROJ_NAME} ALIAS ${SUB_PROJ_NAME})
|
||||
add_library(${PROJECT_NAME}::${SUB_MOD_NAME} ALIAS ${SUB_PROJ_NAME})
|
||||
|
||||
set_target_properties(${SUB_PROJ_NAME} PROPERTIES
|
||||
VERSION "${PROJECT_VERSION}"
|
||||
SOVERSION "${PROJECT_VERSION_MAJOR}"
|
||||
)
|
||||
|
||||
set(__prefix "")
|
||||
if(NOT WIN32)
|
||||
set(__prefix "lib")
|
||||
endif()
|
||||
set(__suffix "")
|
||||
if(FRAMELESSHELPER_BUILD_STATIC)
|
||||
if(MSVC)
|
||||
set(__suffix "lib")
|
||||
else()
|
||||
set(__suffix "a")
|
||||
endif()
|
||||
else()
|
||||
if(WIN32)
|
||||
set(__suffix "dll")
|
||||
elseif(APPLE)
|
||||
set(__suffix "dylib")
|
||||
elseif(UNIX)
|
||||
set(__suffix "so")
|
||||
endif()
|
||||
endif()
|
||||
set(SUB_MOD_FILE_PREFIX "${__prefix}")
|
||||
set(SUB_MOD_FILE_SUFFIX "${__suffix}")
|
||||
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}")
|
||||
unset(__suffix)
|
||||
unset(__prefix)
|
||||
|
||||
if(NOT FRAMELESSHELPER_NO_BUNDLE_RESOURCE)
|
||||
if(QT_VERSION VERSION_GREATER_EQUAL "6.2")
|
||||
qt_add_resources(${SUB_PROJ_NAME} framelesshelpercore
|
||||
|
@ -169,7 +210,15 @@ if(NOT FRAMELESSHELPER_NO_BUNDLE_RESOURCE)
|
|||
FILES
|
||||
"resources/fonts/iconfont.ttf"
|
||||
"resources/images/noise.png"
|
||||
OUTPUT_TARGETS __qrc_targets
|
||||
)
|
||||
if(FRAMELESSHELPER_BUILD_STATIC AND __qrc_targets)
|
||||
foreach(__target ${__qrc_targets})
|
||||
target_sources(${SUB_PROJ_NAME} PRIVATE
|
||||
$<TARGET_OBJECTS:${__target}>
|
||||
)
|
||||
endforeach()
|
||||
endif()
|
||||
else()
|
||||
target_sources(${SUB_PROJ_NAME} PRIVATE
|
||||
framelesshelpercore.qrc
|
||||
|
@ -178,9 +227,10 @@ if(NOT FRAMELESSHELPER_NO_BUNDLE_RESOURCE)
|
|||
endif()
|
||||
|
||||
if(FRAMELESSHELPER_BUILD_STATIC)
|
||||
target_compile_definitions(${SUB_PROJ_NAME} PUBLIC
|
||||
FRAMELESSHELPER_CORE_STATIC
|
||||
)
|
||||
set(__def FRAMELESSHELPER_CORE_STATIC)
|
||||
target_compile_definitions(${SUB_PROJ_NAME} PUBLIC ${__def})
|
||||
list(APPEND SUB_MOD_DEFS ${__def})
|
||||
unset(__def)
|
||||
endif()
|
||||
|
||||
if(FRAMELESSHELPER_NO_DEBUG_OUTPUT)
|
||||
|
@ -190,24 +240,27 @@ if(FRAMELESSHELPER_NO_DEBUG_OUTPUT)
|
|||
endif()
|
||||
|
||||
if(FRAMELESSHELPER_NO_BUNDLE_RESOURCE)
|
||||
target_compile_definitions(${SUB_PROJ_NAME} PRIVATE
|
||||
FRAMELESSHELPER_CORE_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)
|
||||
endif()
|
||||
|
||||
if(FRAMELESSHELPER_NO_PRIVATE)
|
||||
target_compile_definitions(${SUB_PROJ_NAME} PRIVATE
|
||||
FRAMELESSHELPER_CORE_NO_PRIVATE
|
||||
)
|
||||
set(__def FRAMELESSHELPER_CORE_NO_PRIVATE)
|
||||
target_compile_definitions(${SUB_PROJ_NAME} PUBLIC ${__def})
|
||||
list(APPEND SUB_MOD_DEFS ${__def})
|
||||
unset(__def)
|
||||
endif()
|
||||
|
||||
if(DEFINED FRAMELESSHELPER_NAMESPACE)
|
||||
if("x${FRAMELESSHELPER_NAMESPACE}" STREQUAL "x")
|
||||
message(FATAL_ERROR "FRAMELESSHELPER_NAMESPACE can't be empty!")
|
||||
endif()
|
||||
target_compile_definitions(${SUB_PROJ_NAME} PRIVATE
|
||||
FRAMELESSHELPER_NAMESPACE=${FRAMELESSHELPER_NAMESPACE}
|
||||
)
|
||||
set(__def FRAMELESSHELPER_NAMESPACE=${FRAMELESSHELPER_NAMESPACE})
|
||||
target_compile_definitions(${SUB_PROJ_NAME} PUBLIC ${__def})
|
||||
list(APPEND SUB_MOD_DEFS ${__def})
|
||||
unset(__def)
|
||||
endif()
|
||||
|
||||
target_compile_definitions(${SUB_PROJ_NAME} PRIVATE
|
||||
|
@ -287,13 +340,30 @@ if(FRAMELESSHELPER_ENABLE_CFGUARD)
|
|||
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}
|
||||
include(GNUInstallDirs)
|
||||
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}"
|
||||
)
|
||||
endif()
|
||||
|
|
|
@ -97,6 +97,17 @@ QDebug operator<<(QDebug d, const FRAMELESSHELPER_PREPEND_NAMESPACE(Global)::Dpi
|
|||
QT_END_NAMESPACE
|
||||
#endif // QT_NO_DEBUG_STREAM
|
||||
|
||||
#ifndef FRAMELESSHELPER_CORE_NO_BUNDLE_RESOURCE
|
||||
// The "Q_INIT_RESOURCE()" macro can't be used within a namespace,
|
||||
// so we wrap it into a separate function outside of the namespace and
|
||||
// then call it instead inside the namespace, that's also the recommended
|
||||
// workaround provided by Qt's official documentation.
|
||||
extern "C" void framelesshelpercore_initResource()
|
||||
{
|
||||
Q_INIT_RESOURCE(framelesshelpercore);
|
||||
}
|
||||
#endif // FRAMELESSHELPER_CORE_NO_BUNDLE_RESOURCE
|
||||
|
||||
FRAMELESSHELPER_BEGIN_NAMESPACE
|
||||
|
||||
static Q_LOGGING_CATEGORY(lcCoreGlobal, "wangwenx190.framelesshelper.core.global")
|
||||
|
|
|
@ -42,17 +42,6 @@
|
|||
# include <QtGui/qstylehints.h>
|
||||
#endif // (QT_VERSION >= QT_VERSION_CHECK(6, 5, 0))
|
||||
|
||||
#ifndef FRAMELESSHELPER_CORE_NO_BUNDLE_RESOURCE
|
||||
// The "Q_INIT_RESOURCE()" macro can't be used within a namespace,
|
||||
// so we wrap it into a separate function outside of the namespace and
|
||||
// then call it instead inside the namespace, that's also the recommended
|
||||
// workaround provided by Qt's official documentation.
|
||||
static inline void initResource()
|
||||
{
|
||||
Q_INIT_RESOURCE(framelesshelpercore);
|
||||
}
|
||||
#endif // FRAMELESSHELPER_CORE_NO_BUNDLE_RESOURCE
|
||||
|
||||
FRAMELESSHELPER_BEGIN_NAMESPACE
|
||||
|
||||
static Q_LOGGING_CATEGORY(lcFramelessManager, "wangwenx190.framelesshelper.core.framelessmanager")
|
||||
|
@ -151,7 +140,7 @@ void FramelessManagerPrivate::initializeIconFont()
|
|||
return;
|
||||
}
|
||||
inited = true;
|
||||
initResource();
|
||||
framelesshelpercore_initResource();
|
||||
// We always register this font because it's our only fallback.
|
||||
const int id = QFontDatabase::addApplicationFont(kIconFontFilePath);
|
||||
if (id < 0) {
|
||||
|
|
|
@ -39,17 +39,6 @@
|
|||
# include <QtGui/private/qmemrotate_p.h>
|
||||
#endif // FRAMELESSHELPER_CORE_NO_PRIVATE
|
||||
|
||||
#ifndef FRAMELESSHELPER_CORE_NO_BUNDLE_RESOURCE
|
||||
// The "Q_INIT_RESOURCE()" macro can't be used within a namespace,
|
||||
// so we wrap it into a separate function outside of the namespace and
|
||||
// then call it instead inside the namespace, that's also the recommended
|
||||
// workaround provided by Qt's official documentation.
|
||||
static inline void initResource()
|
||||
{
|
||||
Q_INIT_RESOURCE(framelesshelpercore);
|
||||
}
|
||||
#endif // FRAMELESSHELPER_CORE_NO_BUNDLE_RESOURCE
|
||||
|
||||
FRAMELESSHELPER_BEGIN_NAMESPACE
|
||||
|
||||
static Q_LOGGING_CATEGORY(lcMicaMaterial, "wangwenx190.framelesshelper.core.micamaterial")
|
||||
|
@ -587,7 +576,7 @@ void MicaMaterialPrivate::maybeGenerateBlurredWallpaper(const bool force)
|
|||
void MicaMaterialPrivate::updateMaterialBrush()
|
||||
{
|
||||
#ifndef FRAMELESSHELPER_CORE_NO_BUNDLE_RESOURCE
|
||||
initResource();
|
||||
framelesshelpercore_initResource();
|
||||
static const QImage noiseTexture = QImage(kNoiseImageFilePath);
|
||||
#endif // FRAMELESSHELPER_CORE_NO_BUNDLE_RESOURCE
|
||||
QImage micaTexture = QImage(QSize(64, 64), QImage::Format_ARGB32_Premultiplied);
|
||||
|
|
|
@ -100,19 +100,60 @@ endif()
|
|||
set(ALL_SOURCES ${PUBLIC_HEADERS} ${PRIVATE_HEADERS} ${SOURCES})
|
||||
|
||||
if(FRAMELESSHELPER_BUILD_STATIC)
|
||||
set(SUB_MOD_LIB_TYPE "STATIC")
|
||||
set(SUB_MOD_LIB_DIR "lib")
|
||||
add_library(${SUB_PROJ_NAME} STATIC ${ALL_SOURCES})
|
||||
add_library(${SUB_PROJ_NAME}_static ALIAS ${SUB_PROJ_NAME})
|
||||
else()
|
||||
set(SUB_MOD_LIB_TYPE "SHARED")
|
||||
set(SUB_MOD_LIB_DIR "bin")
|
||||
add_library(${SUB_PROJ_NAME} SHARED ${ALL_SOURCES})
|
||||
add_library(${SUB_PROJ_NAME}_shared ALIAS ${SUB_PROJ_NAME})
|
||||
endif()
|
||||
add_library(${PROJECT_NAME}::${SUB_PROJ_NAME} ALIAS ${SUB_PROJ_NAME})
|
||||
add_library(${PROJECT_NAME}::${SUB_MOD_NAME} ALIAS ${SUB_PROJ_NAME})
|
||||
|
||||
set(__import_base_dir ${PROJECT_BINARY_DIR}/imports)
|
||||
if(DEFINED FRAMELESSHELPER_IMPORT_DIR)
|
||||
set(__import_base_dir ${FRAMELESSHELPER_IMPORT_DIR})
|
||||
set_target_properties(${SUB_PROJ_NAME} PROPERTIES
|
||||
VERSION "${PROJECT_VERSION}"
|
||||
SOVERSION "${PROJECT_VERSION_MAJOR}"
|
||||
)
|
||||
|
||||
set(__prefix "")
|
||||
if(NOT WIN32)
|
||||
set(__prefix "lib")
|
||||
endif()
|
||||
set(__import_uri org/wangwenx190/${PROJECT_NAME})
|
||||
set(__import_dir ${__import_base_dir}/${__import_uri})
|
||||
set(__suffix "")
|
||||
if(FRAMELESSHELPER_BUILD_STATIC)
|
||||
if(MSVC)
|
||||
set(__suffix "lib")
|
||||
else()
|
||||
set(__suffix "a")
|
||||
endif()
|
||||
else()
|
||||
if(WIN32)
|
||||
set(__suffix "dll")
|
||||
elseif(APPLE)
|
||||
set(__suffix "dylib")
|
||||
elseif(UNIX)
|
||||
set(__suffix "so")
|
||||
endif()
|
||||
endif()
|
||||
set(SUB_MOD_FILE_PREFIX "${__prefix}")
|
||||
set(SUB_MOD_FILE_SUFFIX "${__suffix}")
|
||||
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}")
|
||||
unset(__suffix)
|
||||
unset(__prefix)
|
||||
|
||||
set(__import_base_dir "${PROJECT_BINARY_DIR}/imports")
|
||||
if(DEFINED FRAMELESSHELPER_IMPORT_DIR)
|
||||
set(__import_base_dir "${FRAMELESSHELPER_IMPORT_DIR}")
|
||||
endif()
|
||||
set(__import_uri "org/wangwenx190/${PROJECT_NAME}")
|
||||
set(__import_dir "${__import_base_dir}/${__import_uri}")
|
||||
|
||||
if(QT_VERSION VERSION_GREATER_EQUAL "6.2")
|
||||
qt_add_qml_module(${SUB_PROJ_NAME}
|
||||
|
@ -131,13 +172,10 @@ if(QT_VERSION VERSION_GREATER_EQUAL "6.2")
|
|||
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_suffix "$<$<CONFIG:Debug>:${CMAKE_DEBUG_POSTFIX}>")
|
||||
set(__lib_ext)
|
||||
if(FRAMELESSHELPER_BUILD_STATIC)
|
||||
if(WIN32)
|
||||
if(MSVC)
|
||||
set(__lib_ext lib)
|
||||
else()
|
||||
set(__lib_ext a)
|
||||
|
@ -151,19 +189,21 @@ if(QT_VERSION VERSION_GREATER_EQUAL "6.2")
|
|||
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}"
|
||||
install(
|
||||
FILES
|
||||
"${__import_dir}/qmldir"
|
||||
"${__import_dir}/${SUB_PROJ_NAME}.qmltypes"
|
||||
"${__import_dir}/${__lib_prefix}${SUB_PROJ_NAME}plugin${__lib_suffix}.${__lib_ext}"
|
||||
DESTINATION "qml/${__import_uri}"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(FRAMELESSHELPER_BUILD_STATIC)
|
||||
target_compile_definitions(${SUB_PROJ_NAME} PUBLIC
|
||||
FRAMELESSHELPER_QUICK_STATIC
|
||||
)
|
||||
set(__def FRAMELESSHELPER_QUICK_STATIC)
|
||||
target_compile_definitions(${SUB_PROJ_NAME} PUBLIC ${__def})
|
||||
list(APPEND SUB_MOD_DEFS ${__def})
|
||||
unset(__def)
|
||||
endif()
|
||||
|
||||
if(FRAMELESSHELPER_NO_DEBUG_OUTPUT)
|
||||
|
@ -173,24 +213,27 @@ if(FRAMELESSHELPER_NO_DEBUG_OUTPUT)
|
|||
endif()
|
||||
|
||||
if(FRAMELESSHELPER_NO_BUNDLE_RESOURCE)
|
||||
target_compile_definitions(${SUB_PROJ_NAME} PRIVATE
|
||||
FRAMELESSHELPER_QUICK_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)
|
||||
endif()
|
||||
|
||||
if(FRAMELESSHELPER_NO_PRIVATE)
|
||||
target_compile_definitions(${SUB_PROJ_NAME} PRIVATE
|
||||
FRAMELESSHELPER_QUICK_NO_PRIVATE
|
||||
)
|
||||
set(__def FRAMELESSHELPER_QUICK_NO_PRIVATE)
|
||||
target_compile_definitions(${SUB_PROJ_NAME} PUBLIC ${__def})
|
||||
list(APPEND SUB_MOD_DEFS ${__def})
|
||||
unset(__def)
|
||||
endif()
|
||||
|
||||
if(DEFINED FRAMELESSHELPER_NAMESPACE)
|
||||
if("x${FRAMELESSHELPER_NAMESPACE}" STREQUAL "x")
|
||||
message(FATAL_ERROR "FRAMELESSHELPER_NAMESPACE can't be empty!")
|
||||
endif()
|
||||
target_compile_definitions(${SUB_PROJ_NAME} PRIVATE
|
||||
FRAMELESSHELPER_NAMESPACE=${FRAMELESSHELPER_NAMESPACE}
|
||||
)
|
||||
set(__def FRAMELESSHELPER_NAMESPACE=${FRAMELESSHELPER_NAMESPACE})
|
||||
target_compile_definitions(${SUB_PROJ_NAME} PUBLIC ${__def})
|
||||
list(APPEND SUB_MOD_DEFS ${__def})
|
||||
unset(__def)
|
||||
endif()
|
||||
|
||||
target_compile_definitions(${SUB_PROJ_NAME} PRIVATE
|
||||
|
@ -244,13 +287,30 @@ if(FRAMELESSHELPER_ENABLE_CFGUARD)
|
|||
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}
|
||||
include(GNUInstallDirs)
|
||||
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}"
|
||||
)
|
||||
endif()
|
||||
|
|
|
@ -88,17 +88,59 @@ endif()
|
|||
set(ALL_SOURCES ${PUBLIC_HEADERS} ${PRIVATE_HEADERS} ${SOURCES})
|
||||
|
||||
if(FRAMELESSHELPER_BUILD_STATIC)
|
||||
set(SUB_MOD_LIB_TYPE "STATIC")
|
||||
set(SUB_MOD_LIB_DIR "lib")
|
||||
add_library(${SUB_PROJ_NAME} STATIC ${ALL_SOURCES})
|
||||
add_library(${SUB_PROJ_NAME}_static ALIAS ${SUB_PROJ_NAME})
|
||||
else()
|
||||
set(SUB_MOD_LIB_TYPE "SHARED")
|
||||
set(SUB_MOD_LIB_DIR "bin")
|
||||
add_library(${SUB_PROJ_NAME} SHARED ${ALL_SOURCES})
|
||||
add_library(${SUB_PROJ_NAME}_shared ALIAS ${SUB_PROJ_NAME})
|
||||
endif()
|
||||
add_library(${PROJECT_NAME}::${SUB_PROJ_NAME} ALIAS ${SUB_PROJ_NAME})
|
||||
add_library(${PROJECT_NAME}::${SUB_MOD_NAME} ALIAS ${SUB_PROJ_NAME})
|
||||
|
||||
set_target_properties(${SUB_PROJ_NAME} PROPERTIES
|
||||
VERSION "${PROJECT_VERSION}"
|
||||
SOVERSION "${PROJECT_VERSION_MAJOR}"
|
||||
)
|
||||
|
||||
set(__prefix "")
|
||||
if(NOT WIN32)
|
||||
set(__prefix "lib")
|
||||
endif()
|
||||
set(__suffix "")
|
||||
if(FRAMELESSHELPER_BUILD_STATIC)
|
||||
target_compile_definitions(${SUB_PROJ_NAME} PUBLIC
|
||||
FRAMELESSHELPER_WIDGETS_STATIC
|
||||
)
|
||||
if(MSVC)
|
||||
set(__suffix "lib")
|
||||
else()
|
||||
set(__suffix "a")
|
||||
endif()
|
||||
else()
|
||||
if(WIN32)
|
||||
set(__suffix "dll")
|
||||
elseif(APPLE)
|
||||
set(__suffix "dylib")
|
||||
elseif(UNIX)
|
||||
set(__suffix "so")
|
||||
endif()
|
||||
endif()
|
||||
set(SUB_MOD_FILE_PREFIX "${__prefix}")
|
||||
set(SUB_MOD_FILE_SUFFIX "${__suffix}")
|
||||
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}")
|
||||
unset(__suffix)
|
||||
unset(__prefix)
|
||||
|
||||
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)
|
||||
endif()
|
||||
|
||||
if(FRAMELESSHELPER_NO_DEBUG_OUTPUT)
|
||||
|
@ -108,24 +150,27 @@ if(FRAMELESSHELPER_NO_DEBUG_OUTPUT)
|
|||
endif()
|
||||
|
||||
if(FRAMELESSHELPER_NO_BUNDLE_RESOURCE)
|
||||
target_compile_definitions(${SUB_PROJ_NAME} PRIVATE
|
||||
FRAMELESSHELPER_WIDGETS_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)
|
||||
endif()
|
||||
|
||||
if(FRAMELESSHELPER_NO_PRIVATE)
|
||||
target_compile_definitions(${SUB_PROJ_NAME} PRIVATE
|
||||
FRAMELESSHELPER_WIDGETS_NO_PRIVATE
|
||||
)
|
||||
set(__def FRAMELESSHELPER_WIDGETS_NO_PRIVATE)
|
||||
target_compile_definitions(${SUB_PROJ_NAME} PUBLIC ${__def})
|
||||
list(APPEND SUB_MOD_DEFS ${__def})
|
||||
unset(__def)
|
||||
endif()
|
||||
|
||||
if(DEFINED FRAMELESSHELPER_NAMESPACE)
|
||||
if("x${FRAMELESSHELPER_NAMESPACE}" STREQUAL "x")
|
||||
message(FATAL_ERROR "FRAMELESSHELPER_NAMESPACE can't be empty!")
|
||||
endif()
|
||||
target_compile_definitions(${SUB_PROJ_NAME} PRIVATE
|
||||
FRAMELESSHELPER_NAMESPACE=${FRAMELESSHELPER_NAMESPACE}
|
||||
)
|
||||
set(__def FRAMELESSHELPER_NAMESPACE=${FRAMELESSHELPER_NAMESPACE})
|
||||
target_compile_definitions(${SUB_PROJ_NAME} PUBLIC ${__def})
|
||||
list(APPEND SUB_MOD_DEFS ${__def})
|
||||
unset(__def)
|
||||
endif()
|
||||
|
||||
target_compile_definitions(${SUB_PROJ_NAME} PRIVATE
|
||||
|
@ -171,13 +216,30 @@ if(FRAMELESSHELPER_ENABLE_CFGUARD)
|
|||
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}
|
||||
include(GNUInstallDirs)
|
||||
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}"
|
||||
)
|
||||
endif()
|
||||
|
|
Loading…
Reference in New Issue