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}")
|
set(__qt_inst_dir "${Qt5_DIR}")
|
||||||
endif()
|
endif()
|
||||||
# /whatever/Qt/6.4.0/gcc_64/lib/cmake/Qt6
|
# /whatever/Qt/6.4.0/gcc_64/lib/cmake/Qt6
|
||||||
set(__qt_inst_dir ${__qt_inst_dir}/../../..)
|
cmake_path(GET __qt_inst_dir PARENT_PATH __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)
|
||||||
message("Qt install dir: ${__qt_inst_dir}")
|
message("Qt install dir: ${__qt_inst_dir}")
|
||||||
message("Qt version: ${QT_VERSION}")
|
message("Qt version: ${QT_VERSION}")
|
||||||
get_target_property(__qt_type Qt${QT_VERSION_MAJOR}::Core TYPE)
|
get_target_property(__qt_type Qt${QT_VERSION_MAJOR}::Core TYPE)
|
||||||
|
|
|
@ -27,9 +27,24 @@
|
||||||
set(_@PROJECT_NAME@_supported_components Core Widgets Quick)
|
set(_@PROJECT_NAME@_supported_components Core Widgets Quick)
|
||||||
|
|
||||||
foreach(_comp ${@PROJECT_NAME@_FIND_COMPONENTS})
|
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@_FOUND FALSE)
|
||||||
set(@PROJECT_NAME@_NOT_FOUND_MESSAGE "Unsupported component: ${_comp}")
|
set(@PROJECT_NAME@_NOT_FOUND_MESSAGE "Unsupported component: ${_comp}")
|
||||||
endif()
|
endif()
|
||||||
include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@${_comp}Targets.cmake")
|
|
||||||
endforeach()
|
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
|
#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
|
FRAMELESSHELPER_BEGIN_NAMESPACE
|
||||||
|
|
||||||
#include "framelesshelper.version"
|
#include "framelesshelper.version"
|
||||||
|
|
|
@ -154,13 +154,54 @@ endif()
|
||||||
set(ALL_SOURCES ${PUBLIC_HEADERS} ${PRIVATE_HEADERS} ${SOURCES})
|
set(ALL_SOURCES ${PUBLIC_HEADERS} ${PRIVATE_HEADERS} ${SOURCES})
|
||||||
|
|
||||||
if(FRAMELESSHELPER_BUILD_STATIC)
|
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 ${ALL_SOURCES})
|
||||||
|
add_library(${SUB_PROJ_NAME}_static ALIAS ${SUB_PROJ_NAME})
|
||||||
else()
|
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 ${ALL_SOURCES})
|
||||||
|
add_library(${SUB_PROJ_NAME}_shared ALIAS ${SUB_PROJ_NAME})
|
||||||
endif()
|
endif()
|
||||||
add_library(${PROJECT_NAME}::${SUB_PROJ_NAME} ALIAS ${SUB_PROJ_NAME})
|
add_library(${PROJECT_NAME}::${SUB_PROJ_NAME} ALIAS ${SUB_PROJ_NAME})
|
||||||
add_library(${PROJECT_NAME}::${SUB_MOD_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(NOT FRAMELESSHELPER_NO_BUNDLE_RESOURCE)
|
||||||
if(QT_VERSION VERSION_GREATER_EQUAL "6.2")
|
if(QT_VERSION VERSION_GREATER_EQUAL "6.2")
|
||||||
qt_add_resources(${SUB_PROJ_NAME} framelesshelpercore
|
qt_add_resources(${SUB_PROJ_NAME} framelesshelpercore
|
||||||
|
@ -169,7 +210,15 @@ if(NOT FRAMELESSHELPER_NO_BUNDLE_RESOURCE)
|
||||||
FILES
|
FILES
|
||||||
"resources/fonts/iconfont.ttf"
|
"resources/fonts/iconfont.ttf"
|
||||||
"resources/images/noise.png"
|
"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()
|
else()
|
||||||
target_sources(${SUB_PROJ_NAME} PRIVATE
|
target_sources(${SUB_PROJ_NAME} PRIVATE
|
||||||
framelesshelpercore.qrc
|
framelesshelpercore.qrc
|
||||||
|
@ -178,9 +227,10 @@ if(NOT FRAMELESSHELPER_NO_BUNDLE_RESOURCE)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(FRAMELESSHELPER_BUILD_STATIC)
|
if(FRAMELESSHELPER_BUILD_STATIC)
|
||||||
target_compile_definitions(${SUB_PROJ_NAME} PUBLIC
|
set(__def FRAMELESSHELPER_CORE_STATIC)
|
||||||
FRAMELESSHELPER_CORE_STATIC
|
target_compile_definitions(${SUB_PROJ_NAME} PUBLIC ${__def})
|
||||||
)
|
list(APPEND SUB_MOD_DEFS ${__def})
|
||||||
|
unset(__def)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(FRAMELESSHELPER_NO_DEBUG_OUTPUT)
|
if(FRAMELESSHELPER_NO_DEBUG_OUTPUT)
|
||||||
|
@ -190,24 +240,27 @@ if(FRAMELESSHELPER_NO_DEBUG_OUTPUT)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(FRAMELESSHELPER_NO_BUNDLE_RESOURCE)
|
if(FRAMELESSHELPER_NO_BUNDLE_RESOURCE)
|
||||||
target_compile_definitions(${SUB_PROJ_NAME} PRIVATE
|
set(__def FRAMELESSHELPER_CORE_NO_BUNDLE_RESOURCE)
|
||||||
FRAMELESSHELPER_CORE_NO_BUNDLE_RESOURCE
|
target_compile_definitions(${SUB_PROJ_NAME} PUBLIC ${__def})
|
||||||
)
|
list(APPEND SUB_MOD_DEFS ${__def})
|
||||||
|
unset(__def)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(FRAMELESSHELPER_NO_PRIVATE)
|
if(FRAMELESSHELPER_NO_PRIVATE)
|
||||||
target_compile_definitions(${SUB_PROJ_NAME} PRIVATE
|
set(__def FRAMELESSHELPER_CORE_NO_PRIVATE)
|
||||||
FRAMELESSHELPER_CORE_NO_PRIVATE
|
target_compile_definitions(${SUB_PROJ_NAME} PUBLIC ${__def})
|
||||||
)
|
list(APPEND SUB_MOD_DEFS ${__def})
|
||||||
|
unset(__def)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(DEFINED FRAMELESSHELPER_NAMESPACE)
|
if(DEFINED FRAMELESSHELPER_NAMESPACE)
|
||||||
if("x${FRAMELESSHELPER_NAMESPACE}" STREQUAL "x")
|
if("x${FRAMELESSHELPER_NAMESPACE}" STREQUAL "x")
|
||||||
message(FATAL_ERROR "FRAMELESSHELPER_NAMESPACE can't be empty!")
|
message(FATAL_ERROR "FRAMELESSHELPER_NAMESPACE can't be empty!")
|
||||||
endif()
|
endif()
|
||||||
target_compile_definitions(${SUB_PROJ_NAME} PRIVATE
|
set(__def FRAMELESSHELPER_NAMESPACE=${FRAMELESSHELPER_NAMESPACE})
|
||||||
FRAMELESSHELPER_NAMESPACE=${FRAMELESSHELPER_NAMESPACE}
|
target_compile_definitions(${SUB_PROJ_NAME} PUBLIC ${__def})
|
||||||
)
|
list(APPEND SUB_MOD_DEFS ${__def})
|
||||||
|
unset(__def)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
target_compile_definitions(${SUB_PROJ_NAME} PRIVATE
|
target_compile_definitions(${SUB_PROJ_NAME} PRIVATE
|
||||||
|
@ -287,13 +340,30 @@ if(FRAMELESSHELPER_ENABLE_CFGUARD)
|
||||||
endif()
|
endif()
|
||||||
setup_compile_params(TARGETS ${SUB_PROJ_NAME} ${__extra_flags})
|
setup_compile_params(TARGETS ${SUB_PROJ_NAME} ${__extra_flags})
|
||||||
if(NOT FRAMELESSHELPER_NO_INSTALL)
|
if(NOT FRAMELESSHELPER_NO_INSTALL)
|
||||||
setup_package_export(
|
include(GNUInstallDirs)
|
||||||
TARGET ${SUB_PROJ_NAME}
|
set(__cmake_dir "${CMAKE_CURRENT_BINARY_DIR}/cmake")
|
||||||
PACKAGE_NAME ${PROJECT_NAME}
|
set(__config_file "${__cmake_dir}/${SUB_PROJ_NAME}Config.cmake")
|
||||||
NAMESPACE ${PROJECT_NAME}
|
configure_file(../../FramelessHelperModuleConfig.cmake.in ${__config_file} @ONLY)
|
||||||
INCLUDE_PATH ${SUB_PROJ_PATH}
|
set(__targets_file "${__cmake_dir}/${SUB_PROJ_NAME}Targets.cmake")
|
||||||
PUBLIC_HEADERS ${PUBLIC_HEADERS}
|
configure_file(../../FramelessHelperModuleTargets.cmake.in ${__targets_file} @ONLY)
|
||||||
ALIAS_HEADERS ${PUBLIC_HEADERS_ALIAS}
|
install(
|
||||||
PRIVATE_HEADERS ${PRIVATE_HEADERS}
|
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()
|
endif()
|
||||||
|
|
|
@ -97,6 +97,17 @@ QDebug operator<<(QDebug d, const FRAMELESSHELPER_PREPEND_NAMESPACE(Global)::Dpi
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
#endif // QT_NO_DEBUG_STREAM
|
#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
|
FRAMELESSHELPER_BEGIN_NAMESPACE
|
||||||
|
|
||||||
static Q_LOGGING_CATEGORY(lcCoreGlobal, "wangwenx190.framelesshelper.core.global")
|
static Q_LOGGING_CATEGORY(lcCoreGlobal, "wangwenx190.framelesshelper.core.global")
|
||||||
|
|
|
@ -42,17 +42,6 @@
|
||||||
# include <QtGui/qstylehints.h>
|
# include <QtGui/qstylehints.h>
|
||||||
#endif // (QT_VERSION >= QT_VERSION_CHECK(6, 5, 0))
|
#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
|
FRAMELESSHELPER_BEGIN_NAMESPACE
|
||||||
|
|
||||||
static Q_LOGGING_CATEGORY(lcFramelessManager, "wangwenx190.framelesshelper.core.framelessmanager")
|
static Q_LOGGING_CATEGORY(lcFramelessManager, "wangwenx190.framelesshelper.core.framelessmanager")
|
||||||
|
@ -151,7 +140,7 @@ void FramelessManagerPrivate::initializeIconFont()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
inited = true;
|
inited = true;
|
||||||
initResource();
|
framelesshelpercore_initResource();
|
||||||
// We always register this font because it's our only fallback.
|
// We always register this font because it's our only fallback.
|
||||||
const int id = QFontDatabase::addApplicationFont(kIconFontFilePath);
|
const int id = QFontDatabase::addApplicationFont(kIconFontFilePath);
|
||||||
if (id < 0) {
|
if (id < 0) {
|
||||||
|
|
|
@ -39,17 +39,6 @@
|
||||||
# include <QtGui/private/qmemrotate_p.h>
|
# include <QtGui/private/qmemrotate_p.h>
|
||||||
#endif // FRAMELESSHELPER_CORE_NO_PRIVATE
|
#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
|
FRAMELESSHELPER_BEGIN_NAMESPACE
|
||||||
|
|
||||||
static Q_LOGGING_CATEGORY(lcMicaMaterial, "wangwenx190.framelesshelper.core.micamaterial")
|
static Q_LOGGING_CATEGORY(lcMicaMaterial, "wangwenx190.framelesshelper.core.micamaterial")
|
||||||
|
@ -587,7 +576,7 @@ void MicaMaterialPrivate::maybeGenerateBlurredWallpaper(const bool force)
|
||||||
void MicaMaterialPrivate::updateMaterialBrush()
|
void MicaMaterialPrivate::updateMaterialBrush()
|
||||||
{
|
{
|
||||||
#ifndef FRAMELESSHELPER_CORE_NO_BUNDLE_RESOURCE
|
#ifndef FRAMELESSHELPER_CORE_NO_BUNDLE_RESOURCE
|
||||||
initResource();
|
framelesshelpercore_initResource();
|
||||||
static const QImage noiseTexture = QImage(kNoiseImageFilePath);
|
static const QImage noiseTexture = QImage(kNoiseImageFilePath);
|
||||||
#endif // FRAMELESSHELPER_CORE_NO_BUNDLE_RESOURCE
|
#endif // FRAMELESSHELPER_CORE_NO_BUNDLE_RESOURCE
|
||||||
QImage micaTexture = QImage(QSize(64, 64), QImage::Format_ARGB32_Premultiplied);
|
QImage micaTexture = QImage(QSize(64, 64), QImage::Format_ARGB32_Premultiplied);
|
||||||
|
|
|
@ -100,19 +100,60 @@ endif()
|
||||||
set(ALL_SOURCES ${PUBLIC_HEADERS} ${PRIVATE_HEADERS} ${SOURCES})
|
set(ALL_SOURCES ${PUBLIC_HEADERS} ${PRIVATE_HEADERS} ${SOURCES})
|
||||||
|
|
||||||
if(FRAMELESSHELPER_BUILD_STATIC)
|
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 ${ALL_SOURCES})
|
||||||
|
add_library(${SUB_PROJ_NAME}_static ALIAS ${SUB_PROJ_NAME})
|
||||||
else()
|
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 ${ALL_SOURCES})
|
||||||
|
add_library(${SUB_PROJ_NAME}_shared ALIAS ${SUB_PROJ_NAME})
|
||||||
endif()
|
endif()
|
||||||
add_library(${PROJECT_NAME}::${SUB_PROJ_NAME} ALIAS ${SUB_PROJ_NAME})
|
add_library(${PROJECT_NAME}::${SUB_PROJ_NAME} ALIAS ${SUB_PROJ_NAME})
|
||||||
add_library(${PROJECT_NAME}::${SUB_MOD_NAME} ALIAS ${SUB_PROJ_NAME})
|
add_library(${PROJECT_NAME}::${SUB_MOD_NAME} ALIAS ${SUB_PROJ_NAME})
|
||||||
|
|
||||||
set(__import_base_dir ${PROJECT_BINARY_DIR}/imports)
|
set_target_properties(${SUB_PROJ_NAME} PROPERTIES
|
||||||
if(DEFINED FRAMELESSHELPER_IMPORT_DIR)
|
VERSION "${PROJECT_VERSION}"
|
||||||
set(__import_base_dir ${FRAMELESSHELPER_IMPORT_DIR})
|
SOVERSION "${PROJECT_VERSION_MAJOR}"
|
||||||
|
)
|
||||||
|
|
||||||
|
set(__prefix "")
|
||||||
|
if(NOT WIN32)
|
||||||
|
set(__prefix "lib")
|
||||||
endif()
|
endif()
|
||||||
set(__import_uri org/wangwenx190/${PROJECT_NAME})
|
set(__suffix "")
|
||||||
set(__import_dir ${__import_base_dir}/${__import_uri})
|
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")
|
if(QT_VERSION VERSION_GREATER_EQUAL "6.2")
|
||||||
qt_add_qml_module(${SUB_PROJ_NAME}
|
qt_add_qml_module(${SUB_PROJ_NAME}
|
||||||
|
@ -131,13 +172,10 @@ if(QT_VERSION VERSION_GREATER_EQUAL "6.2")
|
||||||
if(UNIX)
|
if(UNIX)
|
||||||
set(__lib_prefix lib)
|
set(__lib_prefix lib)
|
||||||
endif()
|
endif()
|
||||||
set(__lib_suffix)
|
set(__lib_suffix "$<$<CONFIG:Debug>:${CMAKE_DEBUG_POSTFIX}>")
|
||||||
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
||||||
set(__lib_suffix ${CMAKE_DEBUG_POSTFIX})
|
|
||||||
endif()
|
|
||||||
set(__lib_ext)
|
set(__lib_ext)
|
||||||
if(FRAMELESSHELPER_BUILD_STATIC)
|
if(FRAMELESSHELPER_BUILD_STATIC)
|
||||||
if(WIN32)
|
if(MSVC)
|
||||||
set(__lib_ext lib)
|
set(__lib_ext lib)
|
||||||
else()
|
else()
|
||||||
set(__lib_ext a)
|
set(__lib_ext a)
|
||||||
|
@ -151,19 +189,21 @@ if(QT_VERSION VERSION_GREATER_EQUAL "6.2")
|
||||||
set(__lib_ext so)
|
set(__lib_ext so)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
install(FILES
|
install(
|
||||||
"${__import_dir}/qmldir"
|
FILES
|
||||||
"${__import_dir}/${SUB_PROJ_NAME}.qmltypes"
|
"${__import_dir}/qmldir"
|
||||||
"${__import_dir}/${__lib_prefix}${SUB_PROJ_NAME}plugin${__lib_suffix}.${__lib_ext}"
|
"${__import_dir}/${SUB_PROJ_NAME}.qmltypes"
|
||||||
DESTINATION "${CMAKE_INSTALL_PREFIX}/qml/${__import_uri}"
|
"${__import_dir}/${__lib_prefix}${SUB_PROJ_NAME}plugin${__lib_suffix}.${__lib_ext}"
|
||||||
|
DESTINATION "qml/${__import_uri}"
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(FRAMELESSHELPER_BUILD_STATIC)
|
if(FRAMELESSHELPER_BUILD_STATIC)
|
||||||
target_compile_definitions(${SUB_PROJ_NAME} PUBLIC
|
set(__def FRAMELESSHELPER_QUICK_STATIC)
|
||||||
FRAMELESSHELPER_QUICK_STATIC
|
target_compile_definitions(${SUB_PROJ_NAME} PUBLIC ${__def})
|
||||||
)
|
list(APPEND SUB_MOD_DEFS ${__def})
|
||||||
|
unset(__def)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(FRAMELESSHELPER_NO_DEBUG_OUTPUT)
|
if(FRAMELESSHELPER_NO_DEBUG_OUTPUT)
|
||||||
|
@ -173,24 +213,27 @@ if(FRAMELESSHELPER_NO_DEBUG_OUTPUT)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(FRAMELESSHELPER_NO_BUNDLE_RESOURCE)
|
if(FRAMELESSHELPER_NO_BUNDLE_RESOURCE)
|
||||||
target_compile_definitions(${SUB_PROJ_NAME} PRIVATE
|
set(__def FRAMELESSHELPER_QUICK_NO_BUNDLE_RESOURCE)
|
||||||
FRAMELESSHELPER_QUICK_NO_BUNDLE_RESOURCE
|
target_compile_definitions(${SUB_PROJ_NAME} PUBLIC ${__def})
|
||||||
)
|
list(APPEND SUB_MOD_DEFS ${__def})
|
||||||
|
unset(__def)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(FRAMELESSHELPER_NO_PRIVATE)
|
if(FRAMELESSHELPER_NO_PRIVATE)
|
||||||
target_compile_definitions(${SUB_PROJ_NAME} PRIVATE
|
set(__def FRAMELESSHELPER_QUICK_NO_PRIVATE)
|
||||||
FRAMELESSHELPER_QUICK_NO_PRIVATE
|
target_compile_definitions(${SUB_PROJ_NAME} PUBLIC ${__def})
|
||||||
)
|
list(APPEND SUB_MOD_DEFS ${__def})
|
||||||
|
unset(__def)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(DEFINED FRAMELESSHELPER_NAMESPACE)
|
if(DEFINED FRAMELESSHELPER_NAMESPACE)
|
||||||
if("x${FRAMELESSHELPER_NAMESPACE}" STREQUAL "x")
|
if("x${FRAMELESSHELPER_NAMESPACE}" STREQUAL "x")
|
||||||
message(FATAL_ERROR "FRAMELESSHELPER_NAMESPACE can't be empty!")
|
message(FATAL_ERROR "FRAMELESSHELPER_NAMESPACE can't be empty!")
|
||||||
endif()
|
endif()
|
||||||
target_compile_definitions(${SUB_PROJ_NAME} PRIVATE
|
set(__def FRAMELESSHELPER_NAMESPACE=${FRAMELESSHELPER_NAMESPACE})
|
||||||
FRAMELESSHELPER_NAMESPACE=${FRAMELESSHELPER_NAMESPACE}
|
target_compile_definitions(${SUB_PROJ_NAME} PUBLIC ${__def})
|
||||||
)
|
list(APPEND SUB_MOD_DEFS ${__def})
|
||||||
|
unset(__def)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
target_compile_definitions(${SUB_PROJ_NAME} PRIVATE
|
target_compile_definitions(${SUB_PROJ_NAME} PRIVATE
|
||||||
|
@ -244,13 +287,30 @@ if(FRAMELESSHELPER_ENABLE_CFGUARD)
|
||||||
endif()
|
endif()
|
||||||
setup_compile_params(TARGETS ${SUB_PROJ_NAME} ${__extra_flags})
|
setup_compile_params(TARGETS ${SUB_PROJ_NAME} ${__extra_flags})
|
||||||
if(NOT FRAMELESSHELPER_NO_INSTALL)
|
if(NOT FRAMELESSHELPER_NO_INSTALL)
|
||||||
setup_package_export(
|
include(GNUInstallDirs)
|
||||||
TARGET ${SUB_PROJ_NAME}
|
set(__cmake_dir "${CMAKE_CURRENT_BINARY_DIR}/cmake")
|
||||||
PACKAGE_NAME ${PROJECT_NAME}
|
set(__config_file "${__cmake_dir}/${SUB_PROJ_NAME}Config.cmake")
|
||||||
NAMESPACE ${PROJECT_NAME}
|
configure_file(../../FramelessHelperModuleConfig.cmake.in ${__config_file} @ONLY)
|
||||||
INCLUDE_PATH ${SUB_PROJ_PATH}
|
set(__targets_file "${__cmake_dir}/${SUB_PROJ_NAME}Targets.cmake")
|
||||||
PUBLIC_HEADERS ${PUBLIC_HEADERS}
|
configure_file(../../FramelessHelperModuleTargets.cmake.in ${__targets_file} @ONLY)
|
||||||
ALIAS_HEADERS ${PUBLIC_HEADERS_ALIAS}
|
install(
|
||||||
PRIVATE_HEADERS ${PRIVATE_HEADERS}
|
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()
|
endif()
|
||||||
|
|
|
@ -88,17 +88,59 @@ endif()
|
||||||
set(ALL_SOURCES ${PUBLIC_HEADERS} ${PRIVATE_HEADERS} ${SOURCES})
|
set(ALL_SOURCES ${PUBLIC_HEADERS} ${PRIVATE_HEADERS} ${SOURCES})
|
||||||
|
|
||||||
if(FRAMELESSHELPER_BUILD_STATIC)
|
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 ${ALL_SOURCES})
|
||||||
|
add_library(${SUB_PROJ_NAME}_static ALIAS ${SUB_PROJ_NAME})
|
||||||
else()
|
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 ${ALL_SOURCES})
|
||||||
|
add_library(${SUB_PROJ_NAME}_shared ALIAS ${SUB_PROJ_NAME})
|
||||||
endif()
|
endif()
|
||||||
add_library(${PROJECT_NAME}::${SUB_PROJ_NAME} ALIAS ${SUB_PROJ_NAME})
|
add_library(${PROJECT_NAME}::${SUB_PROJ_NAME} ALIAS ${SUB_PROJ_NAME})
|
||||||
add_library(${PROJECT_NAME}::${SUB_MOD_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(FRAMELESSHELPER_BUILD_STATIC)
|
||||||
target_compile_definitions(${SUB_PROJ_NAME} PUBLIC
|
if(MSVC)
|
||||||
FRAMELESSHELPER_WIDGETS_STATIC
|
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()
|
endif()
|
||||||
|
|
||||||
if(FRAMELESSHELPER_NO_DEBUG_OUTPUT)
|
if(FRAMELESSHELPER_NO_DEBUG_OUTPUT)
|
||||||
|
@ -108,24 +150,27 @@ if(FRAMELESSHELPER_NO_DEBUG_OUTPUT)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(FRAMELESSHELPER_NO_BUNDLE_RESOURCE)
|
if(FRAMELESSHELPER_NO_BUNDLE_RESOURCE)
|
||||||
target_compile_definitions(${SUB_PROJ_NAME} PRIVATE
|
set(__def FRAMELESSHELPER_WIDGETS_NO_BUNDLE_RESOURCE)
|
||||||
FRAMELESSHELPER_WIDGETS_NO_BUNDLE_RESOURCE
|
target_compile_definitions(${SUB_PROJ_NAME} PUBLIC ${__def})
|
||||||
)
|
list(APPEND SUB_MOD_DEFS ${__def})
|
||||||
|
unset(__def)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(FRAMELESSHELPER_NO_PRIVATE)
|
if(FRAMELESSHELPER_NO_PRIVATE)
|
||||||
target_compile_definitions(${SUB_PROJ_NAME} PRIVATE
|
set(__def FRAMELESSHELPER_WIDGETS_NO_PRIVATE)
|
||||||
FRAMELESSHELPER_WIDGETS_NO_PRIVATE
|
target_compile_definitions(${SUB_PROJ_NAME} PUBLIC ${__def})
|
||||||
)
|
list(APPEND SUB_MOD_DEFS ${__def})
|
||||||
|
unset(__def)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(DEFINED FRAMELESSHELPER_NAMESPACE)
|
if(DEFINED FRAMELESSHELPER_NAMESPACE)
|
||||||
if("x${FRAMELESSHELPER_NAMESPACE}" STREQUAL "x")
|
if("x${FRAMELESSHELPER_NAMESPACE}" STREQUAL "x")
|
||||||
message(FATAL_ERROR "FRAMELESSHELPER_NAMESPACE can't be empty!")
|
message(FATAL_ERROR "FRAMELESSHELPER_NAMESPACE can't be empty!")
|
||||||
endif()
|
endif()
|
||||||
target_compile_definitions(${SUB_PROJ_NAME} PRIVATE
|
set(__def FRAMELESSHELPER_NAMESPACE=${FRAMELESSHELPER_NAMESPACE})
|
||||||
FRAMELESSHELPER_NAMESPACE=${FRAMELESSHELPER_NAMESPACE}
|
target_compile_definitions(${SUB_PROJ_NAME} PUBLIC ${__def})
|
||||||
)
|
list(APPEND SUB_MOD_DEFS ${__def})
|
||||||
|
unset(__def)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
target_compile_definitions(${SUB_PROJ_NAME} PRIVATE
|
target_compile_definitions(${SUB_PROJ_NAME} PRIVATE
|
||||||
|
@ -171,13 +216,30 @@ if(FRAMELESSHELPER_ENABLE_CFGUARD)
|
||||||
endif()
|
endif()
|
||||||
setup_compile_params(TARGETS ${SUB_PROJ_NAME} ${__extra_flags})
|
setup_compile_params(TARGETS ${SUB_PROJ_NAME} ${__extra_flags})
|
||||||
if(NOT FRAMELESSHELPER_NO_INSTALL)
|
if(NOT FRAMELESSHELPER_NO_INSTALL)
|
||||||
setup_package_export(
|
include(GNUInstallDirs)
|
||||||
TARGET ${SUB_PROJ_NAME}
|
set(__cmake_dir "${CMAKE_CURRENT_BINARY_DIR}/cmake")
|
||||||
PACKAGE_NAME ${PROJECT_NAME}
|
set(__config_file "${__cmake_dir}/${SUB_PROJ_NAME}Config.cmake")
|
||||||
NAMESPACE ${PROJECT_NAME}
|
configure_file(../../FramelessHelperModuleConfig.cmake.in ${__config_file} @ONLY)
|
||||||
INCLUDE_PATH ${SUB_PROJ_PATH}
|
set(__targets_file "${__cmake_dir}/${SUB_PROJ_NAME}Targets.cmake")
|
||||||
PUBLIC_HEADERS ${PUBLIC_HEADERS}
|
configure_file(../../FramelessHelperModuleTargets.cmake.in ${__targets_file} @ONLY)
|
||||||
ALIAS_HEADERS ${PUBLIC_HEADERS_ALIAS}
|
install(
|
||||||
PRIVATE_HEADERS ${PRIVATE_HEADERS}
|
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()
|
endif()
|
||||||
|
|
Loading…
Reference in New Issue