Allow build as a CMake package, support the install command
Signed-off-by: Yuhang Zhao <2546789017@qq.com>
This commit is contained in:
parent
9a93475f2b
commit
2a113ee8ab
|
@ -36,6 +36,9 @@ option(FRAMELESSHELPER_BUILD_WIDGETS "Build FramelessHelper's Widgets module." O
|
||||||
option(FRAMELESSHELPER_BUILD_QUICK "Build FramelessHelper's Quick module." ON)
|
option(FRAMELESSHELPER_BUILD_QUICK "Build FramelessHelper's Quick module." ON)
|
||||||
option(FRAMELESSHELPER_BUILD_EXAMPLES "Build FramelessHelper demo applications." ON)
|
option(FRAMELESSHELPER_BUILD_EXAMPLES "Build FramelessHelper demo applications." ON)
|
||||||
|
|
||||||
|
include(GNUInstallDirs)
|
||||||
|
include(CMakePackageConfigHelpers)
|
||||||
|
|
||||||
if(NOT DEFINED CMAKE_BUILD_TYPE)
|
if(NOT DEFINED CMAKE_BUILD_TYPE)
|
||||||
set(CMAKE_BUILD_TYPE Release)
|
set(CMAKE_BUILD_TYPE Release)
|
||||||
endif()
|
endif()
|
||||||
|
@ -99,6 +102,24 @@ find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Gui)
|
||||||
find_package(QT NAMES Qt6 Qt5 COMPONENTS Widgets Quick)
|
find_package(QT NAMES Qt6 Qt5 COMPONENTS Widgets Quick)
|
||||||
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Widgets Quick)
|
find_package(Qt${QT_VERSION_MAJOR} 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
|
||||||
|
)
|
||||||
|
|
||||||
|
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}
|
||||||
|
)
|
||||||
|
|
||||||
if(TARGET Qt${QT_VERSION_MAJOR}::Core AND TARGET Qt${QT_VERSION_MAJOR}::Gui)
|
if(TARGET Qt${QT_VERSION_MAJOR}::Core AND TARGET Qt${QT_VERSION_MAJOR}::Gui)
|
||||||
add_subdirectory(src)
|
add_subdirectory(src)
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
@PACKAGE_INIT@
|
||||||
|
|
||||||
|
set(_@PROJECT_NAME@_supported_components Core Widgets Quick)
|
||||||
|
|
||||||
|
foreach(_comp ${@PROJECT_NAME@_FIND_COMPONENTS})
|
||||||
|
if(NOT _comp IN_LIST _@PROJECT_NAME@_supported_components)
|
||||||
|
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()
|
|
@ -88,14 +88,17 @@ There are some additional restrictions for each platform, please refer to the _P
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/wangwenx190/framelesshelper.git
|
git clone https://github.com/wangwenx190/framelesshelper.git
|
||||||
mkdir build
|
mkdir A_TEMP_DIR
|
||||||
cd build
|
cd A_TEMP_DIR
|
||||||
cmake -DCMAKE_PREFIX_PATH=<YOUR_QT_SDK_DIR_PATH> -DCMAKE_BUILD_TYPE=Release -GNinja ../framelesshelper
|
cmake -DCMAKE_PREFIX_PATH=<YOUR_QT_SDK_DIR_PATH> -DCMAKE_INSTALL_PREFIX=<WHERE_YOU_WANT_TO_INSTALL> -DCMAKE_BUILD_TYPE=Release -GNinja <PATH_TO_THE_REPOSITORY>
|
||||||
cmake --build . --config Release --target all --parallel
|
cmake --build . --config Release --target all --parallel
|
||||||
|
cmake --install . --config Release --strip
|
||||||
```
|
```
|
||||||
|
|
||||||
**IMPORTANT NOTE**: On Linux you need to install the _GTK3_ and _X11_ development packages first.
|
**IMPORTANT NOTE**: On Linux you need to install the _GTK3_ and _X11_ development packages first.
|
||||||
|
|
||||||
|
Once the compilation and installation is done, you will be able to use the `find_package(FramelessHelper REQUIRED COMPONENTS Core Widgets Quick)` command to find and link to the FramelessHelper library. But before doing that, please make sure CMake knows where to find FramelessHelper, by passing the `CMAKE_PREFIX_PATH` variable to it. For example: `-DCMAKE_PREFIX_PATH=C:/my-cmake-packages;C:/my-toolchain;etc...`. Build FramelessHelper as a sub-directory of your CMake project is of course also supported.
|
||||||
|
|
||||||
## Use
|
## Use
|
||||||
|
|
||||||
### Qt Widgets
|
### Qt Widgets
|
||||||
|
|
|
@ -30,23 +30,30 @@ endif()
|
||||||
|
|
||||||
set(SUB_MOD_NAME Core)
|
set(SUB_MOD_NAME Core)
|
||||||
set(SUB_PROJ_NAME ${PROJECT_NAME}${SUB_MOD_NAME})
|
set(SUB_PROJ_NAME ${PROJECT_NAME}${SUB_MOD_NAME})
|
||||||
|
set(SUB_PROJ_PATH ${PROJECT_NAME}/${SUB_MOD_NAME})
|
||||||
|
|
||||||
set(INCLUDE_PREFIX ../../include/${PROJECT_NAME}/${SUB_MOD_NAME})
|
set(INCLUDE_PREFIX ../../include/${SUB_PROJ_PATH})
|
||||||
|
|
||||||
configure_file(framelesshelper_version.inc.in
|
configure_file(framelesshelper_version.inc.in
|
||||||
${PROJECT_BINARY_DIR}/framelesshelper_version.inc @ONLY)
|
${CMAKE_CURRENT_BINARY_DIR}/framelesshelper_version.inc @ONLY)
|
||||||
|
|
||||||
set(SOURCES
|
set(PUBLIC_HEADERS
|
||||||
${PROJECT_BINARY_DIR}/framelesshelper_version.inc
|
${CMAKE_CURRENT_BINARY_DIR}/framelesshelper_version.inc
|
||||||
${INCLUDE_PREFIX}/framelesshelpercore_global.h
|
${INCLUDE_PREFIX}/framelesshelpercore_global.h
|
||||||
${INCLUDE_PREFIX}/framelesshelper_qt.h
|
${INCLUDE_PREFIX}/framelesshelper_qt.h
|
||||||
${INCLUDE_PREFIX}/framelessmanager.h
|
${INCLUDE_PREFIX}/framelessmanager.h
|
||||||
${INCLUDE_PREFIX}/utils.h
|
${INCLUDE_PREFIX}/utils.h
|
||||||
${INCLUDE_PREFIX}/chromepalette.h
|
${INCLUDE_PREFIX}/chromepalette.h
|
||||||
|
)
|
||||||
|
|
||||||
|
set(PRIVATE_HEADERS
|
||||||
${INCLUDE_PREFIX}/private/framelessmanager_p.h
|
${INCLUDE_PREFIX}/private/framelessmanager_p.h
|
||||||
${INCLUDE_PREFIX}/private/framelessconfig_p.h
|
${INCLUDE_PREFIX}/private/framelessconfig_p.h
|
||||||
${INCLUDE_PREFIX}/private/sysapiloader_p.h
|
${INCLUDE_PREFIX}/private/sysapiloader_p.h
|
||||||
${INCLUDE_PREFIX}/private/chromepalette_p.h
|
${INCLUDE_PREFIX}/private/chromepalette_p.h
|
||||||
|
)
|
||||||
|
|
||||||
|
set(SOURCES
|
||||||
framelesshelpercore.qrc
|
framelesshelpercore.qrc
|
||||||
utils.cpp
|
utils.cpp
|
||||||
framelesshelper_qt.cpp
|
framelesshelper_qt.cpp
|
||||||
|
@ -58,9 +65,11 @@ set(SOURCES
|
||||||
)
|
)
|
||||||
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
list(APPEND SOURCES
|
list(APPEND PUBLIC_HEADERS
|
||||||
${INCLUDE_PREFIX}/framelesshelper_windows.h
|
${INCLUDE_PREFIX}/framelesshelper_windows.h
|
||||||
${INCLUDE_PREFIX}/framelesshelper_win.h
|
${INCLUDE_PREFIX}/framelesshelper_win.h
|
||||||
|
)
|
||||||
|
list(APPEND SOURCES
|
||||||
utils_win.cpp
|
utils_win.cpp
|
||||||
framelesshelper_win.cpp
|
framelesshelper_win.cpp
|
||||||
)
|
)
|
||||||
|
@ -80,11 +89,14 @@ if(WIN32 AND NOT FRAMELESSHELPER_BUILD_STATIC)
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
set(ALL_SOURCES ${PUBLIC_HEADERS} ${PRIVATE_HEADERS} ${SOURCES})
|
||||||
|
|
||||||
if(FRAMELESSHELPER_BUILD_STATIC)
|
if(FRAMELESSHELPER_BUILD_STATIC)
|
||||||
add_library(${SUB_PROJ_NAME} STATIC ${SOURCES})
|
add_library(${SUB_PROJ_NAME} STATIC ${ALL_SOURCES})
|
||||||
else()
|
else()
|
||||||
add_library(${SUB_PROJ_NAME} SHARED ${SOURCES})
|
add_library(${SUB_PROJ_NAME} SHARED ${ALL_SOURCES})
|
||||||
endif()
|
endif()
|
||||||
|
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})
|
||||||
|
|
||||||
if(FRAMELESSHELPER_BUILD_STATIC)
|
if(FRAMELESSHELPER_BUILD_STATIC)
|
||||||
|
@ -152,5 +164,29 @@ target_link_libraries(${SUB_PROJ_NAME} PRIVATE
|
||||||
target_include_directories(${SUB_PROJ_NAME} PUBLIC
|
target_include_directories(${SUB_PROJ_NAME} PUBLIC
|
||||||
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>/${INCLUDE_PREFIX}"
|
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>/${INCLUDE_PREFIX}"
|
||||||
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>/${INCLUDE_PREFIX}/private"
|
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>/${INCLUDE_PREFIX}/private"
|
||||||
"$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}>"
|
"$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>"
|
||||||
|
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>/${SUB_PROJ_PATH}"
|
||||||
|
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>/${SUB_PROJ_PATH}/private"
|
||||||
|
)
|
||||||
|
|
||||||
|
install(TARGETS ${SUB_PROJ_NAME}
|
||||||
|
EXPORT ${SUB_PROJ_NAME}Targets
|
||||||
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
|
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${SUB_PROJ_PATH}
|
||||||
|
)
|
||||||
|
|
||||||
|
export(EXPORT ${SUB_PROJ_NAME}Targets
|
||||||
|
FILE "${CMAKE_CURRENT_BINARY_DIR}/cmake/${SUB_PROJ_NAME}Targets.cmake"
|
||||||
|
NAMESPACE ${PROJECT_NAME}::
|
||||||
|
)
|
||||||
|
|
||||||
|
install(FILES ${PUBLIC_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${SUB_PROJ_PATH})
|
||||||
|
install(FILES ${PRIVATE_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${SUB_PROJ_PATH}/private)
|
||||||
|
|
||||||
|
install(EXPORT ${SUB_PROJ_NAME}Targets
|
||||||
|
FILE ${SUB_PROJ_NAME}Targets.cmake
|
||||||
|
NAMESPACE ${PROJECT_NAME}::
|
||||||
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
|
||||||
)
|
)
|
||||||
|
|
|
@ -27,20 +27,27 @@ find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS QuickTemplates2 QuickCont
|
||||||
|
|
||||||
set(SUB_MOD_NAME Quick)
|
set(SUB_MOD_NAME Quick)
|
||||||
set(SUB_PROJ_NAME ${PROJECT_NAME}${SUB_MOD_NAME})
|
set(SUB_PROJ_NAME ${PROJECT_NAME}${SUB_MOD_NAME})
|
||||||
|
set(SUB_PROJ_PATH ${PROJECT_NAME}/${SUB_MOD_NAME})
|
||||||
|
|
||||||
set(INCLUDE_PREFIX ../../include/${PROJECT_NAME}/${SUB_MOD_NAME})
|
set(INCLUDE_PREFIX ../../include/${SUB_PROJ_PATH})
|
||||||
|
|
||||||
set(SOURCES
|
set(PUBLIC_HEADERS
|
||||||
${INCLUDE_PREFIX}/framelesshelperquick_global.h
|
${INCLUDE_PREFIX}/framelesshelperquick_global.h
|
||||||
${INCLUDE_PREFIX}/framelessquickmodule.h
|
${INCLUDE_PREFIX}/framelessquickmodule.h
|
||||||
${INCLUDE_PREFIX}/framelessquickhelper.h
|
${INCLUDE_PREFIX}/framelessquickhelper.h
|
||||||
${INCLUDE_PREFIX}/framelessquickutils.h
|
${INCLUDE_PREFIX}/framelessquickutils.h
|
||||||
${INCLUDE_PREFIX}/quickchromepalette.h
|
${INCLUDE_PREFIX}/quickchromepalette.h
|
||||||
|
)
|
||||||
|
|
||||||
|
set(PRIVATE_HEADERS
|
||||||
${INCLUDE_PREFIX}/private/quickstandardsystembutton_p.h
|
${INCLUDE_PREFIX}/private/quickstandardsystembutton_p.h
|
||||||
${INCLUDE_PREFIX}/private/quickstandardtitlebar_p.h
|
${INCLUDE_PREFIX}/private/quickstandardtitlebar_p.h
|
||||||
${INCLUDE_PREFIX}/private/framelessquickhelper_p.h
|
${INCLUDE_PREFIX}/private/framelessquickhelper_p.h
|
||||||
${INCLUDE_PREFIX}/private/framelessquickwindow_p.h
|
${INCLUDE_PREFIX}/private/framelessquickwindow_p.h
|
||||||
${INCLUDE_PREFIX}/private/framelessquickwindow_p_p.h
|
${INCLUDE_PREFIX}/private/framelessquickwindow_p_p.h
|
||||||
|
)
|
||||||
|
|
||||||
|
set(SOURCES
|
||||||
quickstandardsystembutton.cpp
|
quickstandardsystembutton.cpp
|
||||||
quickstandardtitlebar.cpp
|
quickstandardtitlebar.cpp
|
||||||
framelessquickutils.cpp
|
framelessquickutils.cpp
|
||||||
|
@ -61,29 +68,47 @@ if(WIN32 AND NOT FRAMELESSHELPER_BUILD_STATIC)
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
set(ALL_SOURCES ${PUBLIC_HEADERS} ${PRIVATE_HEADERS} ${SOURCES})
|
||||||
|
|
||||||
if(FRAMELESSHELPER_BUILD_STATIC)
|
if(FRAMELESSHELPER_BUILD_STATIC)
|
||||||
add_library(${SUB_PROJ_NAME} STATIC ${SOURCES})
|
add_library(${SUB_PROJ_NAME} STATIC ${ALL_SOURCES})
|
||||||
else()
|
else()
|
||||||
add_library(${SUB_PROJ_NAME} SHARED ${SOURCES})
|
add_library(${SUB_PROJ_NAME} SHARED ${ALL_SOURCES})
|
||||||
endif()
|
endif()
|
||||||
|
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_dir ${PROJECT_BINARY_DIR}/imports)
|
set(__import_base_dir ${PROJECT_BINARY_DIR}/imports)
|
||||||
if(${FRAMELESSHELPER_IMPORT_DIR})
|
if(${FRAMELESSHELPER_IMPORT_DIR})
|
||||||
set(_import_dir ${FRAMELESSHELPER_IMPORT_DIR})
|
set(__import_base_dir ${FRAMELESSHELPER_IMPORT_DIR})
|
||||||
endif()
|
endif()
|
||||||
string(APPEND _import_dir /org/wangwenx190/${PROJECT_NAME})
|
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}
|
||||||
URI org.wangwenx190.${PROJECT_NAME}
|
URI org.wangwenx190.${PROJECT_NAME}
|
||||||
VERSION 1.0
|
VERSION 1.0
|
||||||
OUTPUT_DIRECTORY ${_import_dir}
|
OUTPUT_DIRECTORY ${__import_dir}
|
||||||
IMPORTS
|
IMPORTS
|
||||||
QtQml
|
QtQml
|
||||||
QtQuick
|
QtQuick
|
||||||
QtQuick.Controls.Basic
|
QtQuick.Controls.Basic
|
||||||
)
|
)
|
||||||
|
set(__lib_ext)
|
||||||
|
if(WIN32)
|
||||||
|
set(__lib_ext dll)
|
||||||
|
elseif(APPLE)
|
||||||
|
set(__lib_ext dylib)
|
||||||
|
elseif(UNIX)
|
||||||
|
set(__lib_ext so)
|
||||||
|
endif()
|
||||||
|
install(FILES
|
||||||
|
"${__import_dir}/qmldir"
|
||||||
|
"${__import_dir}/${SUB_PROJ_NAME}.qmltypes"
|
||||||
|
"${__import_dir}/${SUB_PROJ_NAME}plugin.${__lib_ext}"
|
||||||
|
DESTINATION ${CMAKE_INSTALL_PREFIX}/imports/${__import_uri}
|
||||||
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(FRAMELESSHELPER_BUILD_STATIC)
|
if(FRAMELESSHELPER_BUILD_STATIC)
|
||||||
|
@ -138,4 +163,28 @@ target_link_libraries(${SUB_PROJ_NAME} PUBLIC
|
||||||
target_include_directories(${SUB_PROJ_NAME} PUBLIC
|
target_include_directories(${SUB_PROJ_NAME} PUBLIC
|
||||||
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>/${INCLUDE_PREFIX}"
|
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>/${INCLUDE_PREFIX}"
|
||||||
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>/${INCLUDE_PREFIX}/private"
|
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>/${INCLUDE_PREFIX}/private"
|
||||||
|
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>/${SUB_PROJ_PATH}"
|
||||||
|
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>/${SUB_PROJ_PATH}/private"
|
||||||
|
)
|
||||||
|
|
||||||
|
install(TARGETS ${SUB_PROJ_NAME}
|
||||||
|
EXPORT ${SUB_PROJ_NAME}Targets
|
||||||
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
|
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${SUB_PROJ_PATH}
|
||||||
|
)
|
||||||
|
|
||||||
|
export(EXPORT ${SUB_PROJ_NAME}Targets
|
||||||
|
FILE "${CMAKE_CURRENT_BINARY_DIR}/cmake/${SUB_PROJ_NAME}Targets.cmake"
|
||||||
|
NAMESPACE ${PROJECT_NAME}::
|
||||||
|
)
|
||||||
|
|
||||||
|
install(FILES ${PUBLIC_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${SUB_PROJ_PATH})
|
||||||
|
install(FILES ${PRIVATE_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${SUB_PROJ_PATH}/private)
|
||||||
|
|
||||||
|
install(EXPORT ${SUB_PROJ_NAME}Targets
|
||||||
|
FILE ${SUB_PROJ_NAME}Targets.cmake
|
||||||
|
NAMESPACE ${PROJECT_NAME}::
|
||||||
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
|
||||||
)
|
)
|
||||||
|
|
|
@ -24,22 +24,29 @@
|
||||||
|
|
||||||
set(SUB_MOD_NAME Widgets)
|
set(SUB_MOD_NAME Widgets)
|
||||||
set(SUB_PROJ_NAME ${PROJECT_NAME}${SUB_MOD_NAME})
|
set(SUB_PROJ_NAME ${PROJECT_NAME}${SUB_MOD_NAME})
|
||||||
|
set(SUB_PROJ_PATH ${PROJECT_NAME}/${SUB_MOD_NAME})
|
||||||
|
|
||||||
set(INCLUDE_PREFIX ../../include/${PROJECT_NAME}/${SUB_MOD_NAME})
|
set(INCLUDE_PREFIX ../../include/${SUB_PROJ_PATH})
|
||||||
|
|
||||||
set(SOURCES
|
set(PUBLIC_HEADERS
|
||||||
${INCLUDE_PREFIX}/framelesshelperwidgets_global.h
|
${INCLUDE_PREFIX}/framelesshelperwidgets_global.h
|
||||||
${INCLUDE_PREFIX}/framelesswidget.h
|
${INCLUDE_PREFIX}/framelesswidget.h
|
||||||
${INCLUDE_PREFIX}/framelessmainwindow.h
|
${INCLUDE_PREFIX}/framelessmainwindow.h
|
||||||
${INCLUDE_PREFIX}/standardsystembutton.h
|
${INCLUDE_PREFIX}/standardsystembutton.h
|
||||||
${INCLUDE_PREFIX}/framelesswidgetshelper.h
|
${INCLUDE_PREFIX}/framelesswidgetshelper.h
|
||||||
${INCLUDE_PREFIX}/standardtitlebar.h
|
${INCLUDE_PREFIX}/standardtitlebar.h
|
||||||
|
)
|
||||||
|
|
||||||
|
set(PRIVATE_HEADERS
|
||||||
${INCLUDE_PREFIX}/private/framelesswidgetshelper_p.h
|
${INCLUDE_PREFIX}/private/framelesswidgetshelper_p.h
|
||||||
${INCLUDE_PREFIX}/private/standardsystembutton_p.h
|
${INCLUDE_PREFIX}/private/standardsystembutton_p.h
|
||||||
${INCLUDE_PREFIX}/private/standardtitlebar_p.h
|
${INCLUDE_PREFIX}/private/standardtitlebar_p.h
|
||||||
${INCLUDE_PREFIX}/private/framelesswidget_p.h
|
${INCLUDE_PREFIX}/private/framelesswidget_p.h
|
||||||
${INCLUDE_PREFIX}/private/framelessmainwindow_p.h
|
${INCLUDE_PREFIX}/private/framelessmainwindow_p.h
|
||||||
${INCLUDE_PREFIX}/private/widgetssharedhelper_p.h
|
${INCLUDE_PREFIX}/private/widgetssharedhelper_p.h
|
||||||
|
)
|
||||||
|
|
||||||
|
set(SOURCES
|
||||||
framelessmainwindow.cpp
|
framelessmainwindow.cpp
|
||||||
framelesswidgetshelper.cpp
|
framelesswidgetshelper.cpp
|
||||||
framelesswidget.cpp
|
framelesswidget.cpp
|
||||||
|
@ -59,11 +66,14 @@ if(WIN32 AND NOT FRAMELESSHELPER_BUILD_STATIC)
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
set(ALL_SOURCES ${PUBLIC_HEADERS} ${PRIVATE_HEADERS} ${SOURCES})
|
||||||
|
|
||||||
if(FRAMELESSHELPER_BUILD_STATIC)
|
if(FRAMELESSHELPER_BUILD_STATIC)
|
||||||
add_library(${SUB_PROJ_NAME} STATIC ${SOURCES})
|
add_library(${SUB_PROJ_NAME} STATIC ${ALL_SOURCES})
|
||||||
else()
|
else()
|
||||||
add_library(${SUB_PROJ_NAME} SHARED ${SOURCES})
|
add_library(${SUB_PROJ_NAME} SHARED ${ALL_SOURCES})
|
||||||
endif()
|
endif()
|
||||||
|
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})
|
||||||
|
|
||||||
if(FRAMELESSHELPER_BUILD_STATIC)
|
if(FRAMELESSHELPER_BUILD_STATIC)
|
||||||
|
@ -107,4 +117,28 @@ target_link_libraries(${SUB_PROJ_NAME} PUBLIC
|
||||||
target_include_directories(${SUB_PROJ_NAME} PUBLIC
|
target_include_directories(${SUB_PROJ_NAME} PUBLIC
|
||||||
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>/${INCLUDE_PREFIX}"
|
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>/${INCLUDE_PREFIX}"
|
||||||
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>/${INCLUDE_PREFIX}/private"
|
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>/${INCLUDE_PREFIX}/private"
|
||||||
|
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>/${SUB_PROJ_PATH}"
|
||||||
|
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>/${SUB_PROJ_PATH}/private"
|
||||||
|
)
|
||||||
|
|
||||||
|
install(TARGETS ${SUB_PROJ_NAME}
|
||||||
|
EXPORT ${SUB_PROJ_NAME}Targets
|
||||||
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
|
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${SUB_PROJ_PATH}
|
||||||
|
)
|
||||||
|
|
||||||
|
export(EXPORT ${SUB_PROJ_NAME}Targets
|
||||||
|
FILE "${CMAKE_CURRENT_BINARY_DIR}/cmake/${SUB_PROJ_NAME}Targets.cmake"
|
||||||
|
NAMESPACE ${PROJECT_NAME}::
|
||||||
|
)
|
||||||
|
|
||||||
|
install(FILES ${PUBLIC_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${SUB_PROJ_PATH})
|
||||||
|
install(FILES ${PRIVATE_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${SUB_PROJ_PATH}/private)
|
||||||
|
|
||||||
|
install(EXPORT ${SUB_PROJ_NAME}Targets
|
||||||
|
FILE ${SUB_PROJ_NAME}Targets.cmake
|
||||||
|
NAMESPACE ${PROJECT_NAME}::
|
||||||
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue