examples: update cmake project

Signed-off-by: Yuhang Zhao <2546789017@qq.com>
This commit is contained in:
Yuhang Zhao 2023-02-19 16:31:24 +08:00
parent cf2bc7c1b9
commit 9e341e4e40
19 changed files with 394 additions and 398 deletions

View File

@ -67,6 +67,27 @@ jobs:
run: |
mkdir ci-test-build
cd ci-test-build
cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_C_COMPILER=${{ matrix.CC }} -DCMAKE_CXX_COMPILER=${{ matrix.CXX }} -DCMAKE_INSTALL_PREFIX=../ci-test-install -DCMAKE_BUILD_TYPE=Release -DFRAMELESSHELPER_BUILD_EXAMPLES=ON ${{ matrix.lib_type_flag }} -DFRAMELESSHELPER_ENABLE_SPECTRE=ON -DFRAMELESSHELPER_ENABLE_EHCONTGUARD=ON -DFRAMELESSHELPER_ENABLE_INTELCET=ON -DFRAMELESSHELPER_ENABLE_INTELJCC=ON -DFRAMELESSHELPER_ENABLE_CFGUARD=ON -GNinja ..
cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_C_COMPILER=${{ matrix.CC }} -DCMAKE_CXX_COMPILER=${{ matrix.CXX }} -DCMAKE_INSTALL_PREFIX=../install -DCMAKE_BUILD_TYPE=Release -DFRAMELESSHELPER_BUILD_EXAMPLES=ON ${{ matrix.lib_type_flag }} -DFRAMELESSHELPER_ENABLE_SPECTRE=ON -DFRAMELESSHELPER_ENABLE_INTELCET=ON -DFRAMELESSHELPER_ENABLE_INTELJCC=ON -DFRAMELESSHELPER_ENABLE_CFGUARD=ON -GNinja ..
cmake --build . --target all --config Release --parallel
cmake --install . --config Release --strip
cd ..
rm -rf ./ci-test-build
- name: Build standalone MainWindow example with CMake
run: |
mkdir ci-test-build
cd ci-test-build
cmake -DCMAKE_PREFIX_PATH=../install -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_C_COMPILER=${{ matrix.CC }} -DCMAKE_CXX_COMPILER=${{ matrix.CXX }} -DCMAKE_BUILD_TYPE=Release -DFRAMELESSHELPER_EXAMPLES_STANDALONE=ON -GNinja ../examples/mainwindow
cmake --build . --target all --config Release --parallel
cd ..
rm -rf ./ci-test-build
- name: Build standalone Quick example with CMake
if: ${{ matrix.qt-version == '6.4.2' }}
run: |
mkdir ci-test-build
cd ci-test-build
cmake -DCMAKE_PREFIX_PATH=../install -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_C_COMPILER=${{ matrix.CC }} -DCMAKE_CXX_COMPILER=${{ matrix.CXX }} -DCMAKE_BUILD_TYPE=Release -DFRAMELESSHELPER_EXAMPLES_STANDALONE=ON -GNinja ../examples/quick
cmake --build . --target all --config Release --parallel
cd ..
rm -rf ./ci-test-build

View File

@ -25,7 +25,7 @@
cmake_minimum_required(VERSION 3.20)
project(FramelessHelper
VERSION 2.3.5
VERSION "2.3.5"
DESCRIPTION "Cross-platform window customization framework for Qt Widgets and Qt Quick."
HOMEPAGE_URL "https://github.com/wangwenx190/framelesshelper/"
)
@ -48,6 +48,7 @@ option(FRAMELESSHELPER_ENABLE_EHCONTGUARD "MSVC only: Enable EH Continuation (EH
option(FRAMELESSHELPER_ENABLE_INTELCET "Enable Intel CET." ON)
option(FRAMELESSHELPER_ENABLE_INTELJCC "Enable Intel JCC." ON)
option(FRAMELESSHELPER_ENABLE_CFGUARD "Enable Control Flow Guard (CFG)." ON)
option(FRAMELESSHELPER_EXAMPLES_STANDALONE "Build the demo projects as standalone CMake projects." OFF)
if(FRAMELESSHELPER_NO_BUNDLE_RESOURCE)
message(WARNING "Nothing will be embeded into FramelessHelper, the chrome buttons will have no icon.")
@ -98,8 +99,8 @@ if(FRAMELESSHELPER_NO_INSTALL)
list(APPEND __extra_flags NO_INSTALL)
endif()
prepare_package_export(
PACKAGE_NAME ${PROJECT_NAME}
PACKAGE_VERSION ${PROJECT_VERSION}
PACKAGE_NAME "${PROJECT_NAME}"
PACKAGE_VERSION "${PROJECT_VERSION}"
${__extra_flags}
)
unset(__extra_flags)
@ -181,5 +182,6 @@ if(NOT FRAMELESSHELPER_NO_SUMMARY)
message("Enable Intel CET: ${FRAMELESSHELPER_ENABLE_INTELCET}")
message("Enable Intel JCC: ${FRAMELESSHELPER_ENABLE_INTELJCC}")
message("Enable Control Flow Guard (CFG): ${FRAMELESSHELPER_ENABLE_CFGUARD}")
message("Build standalone demo projects: ${FRAMELESSHELPER_EXAMPLES_STANDALONE}")
message("-----------------------------------------------------------------")
endif()

View File

@ -22,7 +22,28 @@
SOFTWARE.
]]
set(SOURCES
cmake_minimum_required(VERSION 3.20)
project(FramelessHelperDemo-Dialog VERSION 1.0)
include(../../cmake/utils.cmake)
setup_project(
QT_PROJECT
LANGUAGES CXX RC
NO_WARNING
ENABLE_LTO
)
if(FRAMELESSHELPER_EXAMPLES_STANDALONE)
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)
find_package(FramelessHelper REQUIRED COMPONENTS Core Widgets)
endif()
add_executable(${PROJECT_NAME})
target_sources(${PROJECT_NAME} PRIVATE
../shared/log.h
../shared/log.cpp
../shared/settings.h
@ -33,51 +54,53 @@ set(SOURCES
)
if(WIN32)
enable_language(RC)
list(APPEND SOURCES
../shared/example.rc
../shared/example.manifest
set(__rc_path "${PROJECT_BINARY_DIR}/${PROJECT_NAME}.rc")
generate_win32_rc_file(
PATH "${__rc_path}"
VERSION "${PROJECT_VERSION}"
COMPANY "wangwenx190"
DESCRIPTION "FramelessHelper Demo Application: Dialog"
COPYRIGHT "MIT License"
PRODUCT "FramelessHelper Demo"
ICONS "../shared/example.ico"
)
set(__manifest_path "${PROJECT_BINARY_DIR}/${PROJECT_NAME}.manifest")
generate_win32_manifest_file(
PATH "${__manifest_path}"
ID "org.wangwenx190.demo.Dialog"
VERSION "${PROJECT_VERSION}"
VISTA_COMPAT
WIN7_COMPAT
WIN8_COMPAT
WIN8_1_COMPAT
WIN10_COMPAT
WIN11_COMPAT
XAML_ISLANDS_COMPAT
UTF8_CODEPAGE
)
target_sources(${PROJECT_NAME} PRIVATE
"${__rc_path}"
"${__manifest_path}"
)
endif()
add_executable(Dialog ${SOURCES})
target_link_libraries(Dialog PRIVATE
target_link_libraries(${PROJECT_NAME} PRIVATE
Qt${QT_VERSION_MAJOR}::Widgets
FramelessHelper::Core
FramelessHelper::Widgets
)
include(../../cmake/utils.cmake)
setup_gui_app(
TARGETS Dialog
BUNDLE_ID org.wangwenx190.Dialog
BUNDLE_VERSION 1.0.0
BUNDLE_VERSION_SHORT 1.0
TARGETS ${PROJECT_NAME}
BUNDLE_ID "org.wangwenx190.demo.Dialog"
BUNDLE_VERSION "1.0.0"
BUNDLE_VERSION_SHORT "1.0"
)
set(__extra_flags)
if(NOT FRAMELESSHELPER_NO_PERMISSIVE_CHECKS)
list(APPEND __extra_flags PERMISSIVE)
endif()
if(FRAMELESSHELPER_ENABLE_SPECTRE)
list(APPEND __extra_flags SPECTRE)
endif()
if(FRAMELESSHELPER_ENABLE_EHCONTGUARD)
list(APPEND __extra_flags EHCONTGUARD)
endif()
if(FRAMELESSHELPER_ENABLE_INTELCET)
list(APPEND __extra_flags INTELCET)
endif()
if(FRAMELESSHELPER_ENABLE_INTELJCC)
list(APPEND __extra_flags INTELJCC)
endif()
if(FRAMELESSHELPER_ENABLE_CFGUARD)
list(APPEND __extra_flags CFGUARD)
endif()
setup_compile_params(TARGETS Dialog ${__extra_flags})
if(FRAMELESSHELPER_EXAMPLES_DEPLOYQT)
set(__extra_flags)
if(FRAMELESSHELPER_NO_INSTALL)
set(__extra_flags NO_INSTALL)
endif()
deploy_qt_runtime(TARGET Dialog ${__extra_flags})
deploy_qt_runtime(TARGET ${PROJECT_NAME} ${__extra_flags})
endif()

View File

@ -22,7 +22,28 @@
SOFTWARE.
]]
set(SOURCES
cmake_minimum_required(VERSION 3.20)
project(FramelessHelperDemo-MainWindow VERSION 1.0)
include(../../cmake/utils.cmake)
setup_project(
QT_PROJECT
LANGUAGES CXX RC
NO_WARNING
ENABLE_LTO
)
if(FRAMELESSHELPER_EXAMPLES_STANDALONE)
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)
find_package(FramelessHelper REQUIRED COMPONENTS Core Widgets)
endif()
add_executable(${PROJECT_NAME})
target_sources(${PROJECT_NAME} PRIVATE
../shared/log.h
../shared/log.cpp
../shared/settings.h
@ -38,51 +59,53 @@ set(SOURCES
)
if(WIN32)
enable_language(RC)
list(APPEND SOURCES
../shared/example.rc
../shared/example.manifest
set(__rc_path "${PROJECT_BINARY_DIR}/${PROJECT_NAME}.rc")
generate_win32_rc_file(
PATH "${__rc_path}"
VERSION "${PROJECT_VERSION}"
COMPANY "wangwenx190"
DESCRIPTION "FramelessHelper Demo Application: MainWindow"
COPYRIGHT "MIT License"
PRODUCT "FramelessHelper Demo"
ICONS "../shared/example.ico"
)
set(__manifest_path "${PROJECT_BINARY_DIR}/${PROJECT_NAME}.manifest")
generate_win32_manifest_file(
PATH "${__manifest_path}"
ID "org.wangwenx190.demo.MainWindow"
VERSION "${PROJECT_VERSION}"
VISTA_COMPAT
WIN7_COMPAT
WIN8_COMPAT
WIN8_1_COMPAT
WIN10_COMPAT
WIN11_COMPAT
XAML_ISLANDS_COMPAT
UTF8_CODEPAGE
)
target_sources(${PROJECT_NAME} PRIVATE
"${__rc_path}"
"${__manifest_path}"
)
endif()
add_executable(MainWindow ${SOURCES})
target_link_libraries(MainWindow PRIVATE
target_link_libraries(${PROJECT_NAME} PRIVATE
Qt${QT_VERSION_MAJOR}::Widgets
FramelessHelper::Core
FramelessHelper::Widgets
)
include(../../cmake/utils.cmake)
setup_gui_app(
TARGETS MainWindow
BUNDLE_ID org.wangwenx190.MainWindow
BUNDLE_VERSION 1.0.0
BUNDLE_VERSION_SHORT 1.0
TARGETS ${PROJECT_NAME}
BUNDLE_ID "org.wangwenx190.demo.MainWindow"
BUNDLE_VERSION "1.0.0"
BUNDLE_VERSION_SHORT "1.0"
)
set(__extra_flags)
if(NOT FRAMELESSHELPER_NO_PERMISSIVE_CHECKS)
list(APPEND __extra_flags PERMISSIVE)
endif()
if(FRAMELESSHELPER_ENABLE_SPECTRE)
list(APPEND __extra_flags SPECTRE)
endif()
if(FRAMELESSHELPER_ENABLE_EHCONTGUARD)
list(APPEND __extra_flags EHCONTGUARD)
endif()
if(FRAMELESSHELPER_ENABLE_INTELCET)
list(APPEND __extra_flags INTELCET)
endif()
if(FRAMELESSHELPER_ENABLE_INTELJCC)
list(APPEND __extra_flags INTELJCC)
endif()
if(FRAMELESSHELPER_ENABLE_CFGUARD)
list(APPEND __extra_flags CFGUARD)
endif()
setup_compile_params(TARGETS MainWindow ${__extra_flags})
if(FRAMELESSHELPER_EXAMPLES_DEPLOYQT)
set(__extra_flags)
if(FRAMELESSHELPER_NO_INSTALL)
set(__extra_flags NO_INSTALL)
endif()
deploy_qt_runtime(TARGET MainWindow ${__extra_flags})
deploy_qt_runtime(TARGET ${PROJECT_NAME} ${__extra_flags})
endif()

View File

@ -22,14 +22,31 @@
SOFTWARE.
]]
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS OpenGL)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS OpenGL)
cmake_minimum_required(VERSION 3.20)
if(QT_VERSION_MAJOR GREATER_EQUAL 6)
find_package(Qt6 REQUIRED COMPONENTS OpenGLWidgets)
project(FramelessHelperDemo-OpenGLWidget VERSION 1.0)
include(../../cmake/utils.cmake)
setup_project(
QT_PROJECT
LANGUAGES CXX RC
NO_WARNING
ENABLE_LTO
)
if(FRAMELESSHELPER_EXAMPLES_STANDALONE)
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets OpenGL)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets OpenGL)
if(QT_VERSION_MAJOR GREATER_EQUAL 6)
find_package(Qt6 REQUIRED COMPONENTS OpenGLWidgets)
endif()
find_package(FramelessHelper REQUIRED COMPONENTS Core Widgets)
endif()
set(SOURCES
add_executable(${PROJECT_NAME})
target_sources(${PROJECT_NAME} PRIVATE
../shared/log.h
../shared/log.cpp
../shared/settings.h
@ -45,58 +62,60 @@ set(SOURCES
)
if(WIN32)
enable_language(RC)
list(APPEND SOURCES
../shared/example.rc
../shared/example.manifest
set(__rc_path "${PROJECT_BINARY_DIR}/${PROJECT_NAME}.rc")
generate_win32_rc_file(
PATH "${__rc_path}"
VERSION "${PROJECT_VERSION}"
COMPANY "wangwenx190"
DESCRIPTION "FramelessHelper Demo Application: OpenGLWidget"
COPYRIGHT "MIT License"
PRODUCT "FramelessHelper Demo"
ICONS "../shared/example.ico"
)
set(__manifest_path "${PROJECT_BINARY_DIR}/${PROJECT_NAME}.manifest")
generate_win32_manifest_file(
PATH "${__manifest_path}"
ID "org.wangwenx190.demo.OpenGLWidget"
VERSION "${PROJECT_VERSION}"
VISTA_COMPAT
WIN7_COMPAT
WIN8_COMPAT
WIN8_1_COMPAT
WIN10_COMPAT
WIN11_COMPAT
XAML_ISLANDS_COMPAT
UTF8_CODEPAGE
)
target_sources(${PROJECT_NAME} PRIVATE
"${__rc_path}"
"${__manifest_path}"
)
endif()
add_executable(OpenGLWidget ${SOURCES})
target_link_libraries(OpenGLWidget PRIVATE
target_link_libraries(${PROJECT_NAME} PRIVATE
Qt${QT_VERSION_MAJOR}::Widgets
Qt${QT_VERSION_MAJOR}::OpenGL
FramelessHelper::Core
FramelessHelper::Widgets
)
if(QT_VERSION_MAJOR GREATER_EQUAL 6)
target_link_libraries(OpenGLWidget PRIVATE
if(TARGET Qt6::OpenGLWidgets)
target_link_libraries(${PROJECT_NAME} PRIVATE
Qt6::OpenGLWidgets
)
endif()
include(../../cmake/utils.cmake)
setup_gui_app(
TARGETS OpenGLWidget
BUNDLE_ID org.wangwenx190.OpenGLWidget
BUNDLE_VERSION 1.0.0
BUNDLE_VERSION_SHORT 1.0
TARGETS ${PROJECT_NAME}
BUNDLE_ID "org.wangwenx190.demo.OpenGLWidget"
BUNDLE_VERSION "1.0.0"
BUNDLE_VERSION_SHORT "1.0"
)
set(__extra_flags)
if(NOT FRAMELESSHELPER_NO_PERMISSIVE_CHECKS)
list(APPEND __extra_flags PERMISSIVE)
endif()
if(FRAMELESSHELPER_ENABLE_SPECTRE)
list(APPEND __extra_flags SPECTRE)
endif()
if(FRAMELESSHELPER_ENABLE_EHCONTGUARD)
list(APPEND __extra_flags EHCONTGUARD)
endif()
if(FRAMELESSHELPER_ENABLE_INTELCET)
list(APPEND __extra_flags INTELCET)
endif()
if(FRAMELESSHELPER_ENABLE_INTELJCC)
list(APPEND __extra_flags INTELJCC)
endif()
if(FRAMELESSHELPER_ENABLE_CFGUARD)
list(APPEND __extra_flags CFGUARD)
endif()
setup_compile_params(TARGETS OpenGLWidget ${__extra_flags})
if(FRAMELESSHELPER_EXAMPLES_DEPLOYQT)
set(__extra_flags)
if(FRAMELESSHELPER_NO_INSTALL)
set(__extra_flags NO_INSTALL)
endif()
deploy_qt_runtime(TARGET OpenGLWidget ${__extra_flags})
deploy_qt_runtime(TARGET ${PROJECT_NAME} ${__extra_flags})
endif()

View File

@ -22,10 +22,28 @@
SOFTWARE.
]]
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Quick)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Quick)
cmake_minimum_required(VERSION 3.20)
set(SOURCES
project(FramelessHelperDemo-Quick VERSION 1.0)
include(../../cmake/utils.cmake)
setup_project(
QT_PROJECT
LANGUAGES CXX RC
NO_WARNING
ENABLE_LTO
)
if(FRAMELESSHELPER_EXAMPLES_STANDALONE)
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Quick)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Quick)
find_package(FramelessHelper REQUIRED COMPONENTS Core Quick)
endif()
add_executable(${PROJECT_NAME})
target_sources(${PROJECT_NAME} PRIVATE
../shared/log.h
../shared/log.cpp
../shared/settings.h
@ -35,20 +53,37 @@ set(SOURCES
quicksettings.cpp
)
if(QT_VERSION VERSION_LESS "6.2")
list(APPEND SOURCES resources.qrc)
endif()
if(WIN32)
enable_language(RC)
list(APPEND SOURCES
../shared/example.rc
../shared/example.manifest
set(__rc_path "${PROJECT_BINARY_DIR}/${PROJECT_NAME}.rc")
generate_win32_rc_file(
PATH "${__rc_path}"
VERSION "${PROJECT_VERSION}"
COMPANY "wangwenx190"
DESCRIPTION "FramelessHelper Demo Application: Quick"
COPYRIGHT "MIT License"
PRODUCT "FramelessHelper Demo"
ICONS "../shared/example.ico"
)
set(__manifest_path "${PROJECT_BINARY_DIR}/${PROJECT_NAME}.manifest")
generate_win32_manifest_file(
PATH "${__manifest_path}"
ID "org.wangwenx190.demo.Quick"
VERSION "${PROJECT_VERSION}"
VISTA_COMPAT
WIN7_COMPAT
WIN8_COMPAT
WIN8_1_COMPAT
WIN10_COMPAT
WIN11_COMPAT
XAML_ISLANDS_COMPAT
UTF8_CODEPAGE
)
target_sources(${PROJECT_NAME} PRIVATE
"${__rc_path}"
"${__manifest_path}"
)
endif()
add_executable(Quick ${SOURCES})
if(QT_VERSION VERSION_GREATER_EQUAL "6.2")
set(QML_SOURCES
"qml/Window.qml"
@ -58,11 +93,9 @@ if(QT_VERSION VERSION_GREATER_EQUAL "6.2")
set_source_files_properties(${QML_SOURCES}
PROPERTIES QT_DISCARD_FILE_CONTENTS TRUE
)
qt_add_qml_module(Quick
qt_add_qml_module(${PROJECT_NAME}
URI Demo
VERSION 1.0
IMPORT_PATH "${PROJECT_BINARY_DIR}/imports"
OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/imports/Demo"
RESOURCE_PREFIX "/"
NO_RESOURCE_TARGET_PATH
IMPORTS
@ -72,57 +105,37 @@ if(QT_VERSION VERSION_GREATER_EQUAL "6.2")
QML_FILES ${QML_SOURCES}
#ENABLE_TYPE_COMPILER
)
qt_add_resources(Quick resources
qt_add_resources(${PROJECT_NAME} resources
PREFIX
"/"
FILES
"images/microsoft.svg"
)
else()
target_sources(${PROJECT_NAME} PRIVATE resources.qrc)
endif()
target_link_libraries(Quick PRIVATE
target_link_libraries(${PROJECT_NAME} PRIVATE
Qt${QT_VERSION_MAJOR}::Quick
Qt${QT_VERSION_MAJOR}::QuickPrivate
FramelessHelper::Core
FramelessHelper::Quick
)
target_compile_definitions(Quick PRIVATE
$<$<OR:$<CONFIG:Debug>,$<CONFIG:RelWithDebInfo>>:QT_QML_DEBUG>
setup_gui_app(
TARGETS ${PROJECT_NAME}
BUNDLE_ID "org.wangwenx190.demo.Quick"
BUNDLE_VERSION "1.0.0"
BUNDLE_VERSION_SHORT "1.0"
)
include(../../cmake/utils.cmake)
setup_gui_app(
TARGETS Quick
BUNDLE_ID org.wangwenx190.Quick
BUNDLE_VERSION 1.0.0
BUNDLE_VERSION_SHORT 1.0
)
set(__extra_flags)
if(NOT FRAMELESSHELPER_NO_PERMISSIVE_CHECKS)
list(APPEND __extra_flags PERMISSIVE)
endif()
if(FRAMELESSHELPER_ENABLE_SPECTRE)
list(APPEND __extra_flags SPECTRE)
endif()
if(FRAMELESSHELPER_ENABLE_EHCONTGUARD)
list(APPEND __extra_flags EHCONTGUARD)
endif()
if(FRAMELESSHELPER_ENABLE_INTELCET)
list(APPEND __extra_flags INTELCET)
endif()
if(FRAMELESSHELPER_ENABLE_INTELJCC)
list(APPEND __extra_flags INTELJCC)
endif()
if(FRAMELESSHELPER_ENABLE_CFGUARD)
list(APPEND __extra_flags CFGUARD)
endif()
setup_compile_params(TARGETS Quick ${__extra_flags})
if(FRAMELESSHELPER_EXAMPLES_DEPLOYQT)
set(__extra_flags)
if(FRAMELESSHELPER_NO_INSTALL)
set(__extra_flags NO_INSTALL)
endif()
deploy_qt_runtime(
TARGET Quick
TARGET ${PROJECT_NAME}
QML_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/qml"
${__extra_flags}
)

View File

@ -1,7 +1,6 @@
TEMPLATE = app
TARGET = Quick
TARGET = FramelessHelperDemo-Quick
QT += qml quick quickcontrols2
win32: CONFIG -= embed_manifest_exe
DEFINES += QUICK_USE_QMAKE
HEADERS += \
../shared/log.h \
@ -13,6 +12,5 @@ SOURCES += \
quicksettings.cpp \
main.cpp
RESOURCES += resources.qrc
win32: RC_FILE = ../shared/example.rc
include(../../qmake/core.pri)
include(../../qmake/quick.pri)

View File

@ -23,6 +23,6 @@
@echo off
setlocal
set QSG_RHI_BACKEND=d3d11
"%~dp0Quick.exe"
"%~dp0FramelessHelperDemo-Quick.exe"
endlocal
exit /b 0

View File

@ -0,0 +1,28 @@
:: 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.
@echo off
setlocal
set QSG_RHI_BACKEND=d3d12
"%~dp0FramelessHelperDemo-Quick.exe"
endlocal
exit /b 0

View File

@ -23,6 +23,6 @@
@echo off
setlocal
set QSG_RHI_BACKEND=opengl
"%~dp0Quick.exe"
"%~dp0FramelessHelperDemo-Quick.exe"
endlocal
exit /b 0

View File

@ -23,6 +23,6 @@
@echo off
setlocal
set QSG_RHI_BACKEND=vulkan
"%~dp0Quick.exe"
"%~dp0FramelessHelperDemo-Quick.exe"
endlocal
exit /b 0

View File

@ -1,87 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--
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.
-->
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity type="win32" name="org.wangwenx190.framelesshelper.demo" version="1.0.0.0"/>
<description>FramelessHelper Demo</description>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"/>
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- Windows 10 Version 1809 (October 2018 Update) -->
<maxversiontested Id="10.0.17763.0"/>
<!-- Windows 10 Version 1903 (May 2019 Update) -->
<maxversiontested Id="10.0.18362.0"/>
<!-- Windows 10 Version 1909 (November 2019 Update) -->
<maxversiontested Id="10.0.18363.0"/>
<!-- Windows 10 Version 2004 (May 2020 Update) -->
<maxversiontested Id="10.0.19041.0"/>
<!-- Windows 10 Version 20H2 (October 2020 Update) -->
<maxversiontested Id="10.0.19042.0"/>
<!-- Windows 10 Version 21H1 (May 2021 Update) -->
<maxversiontested Id="10.0.19043.0"/>
<!-- Windows 10 Version 21H2 (November 2021 Update) -->
<maxversiontested Id="10.0.19044.0"/>
<!-- Windows 10 Version 22H2 (October 2022 Update) -->
<maxversiontested Id="10.0.19045.0"/>
<!-- Windows 11 Version 21H2 -->
<maxversiontested Id="10.0.22000.0"/>
<!-- Windows 11 Version 22H2 (October 2022 Update) -->
<maxversiontested Id="10.0.22621.0"/>
<!-- Windows Vista and Windows Server 2008 -->
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
<!-- Windows 7 and Windows Server 2008 R2 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
<!-- Windows 8 and Windows Server 2012 -->
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
<!-- Windows 8.1 and Windows Server 2012 R2 -->
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
<!-- Windows 10 and Windows 11 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
</application>
</compatibility>
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">True/PM</dpiAware>
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2, PerMonitor</dpiAwareness>
<printerDriverIsolation xmlns="http://schemas.microsoft.com/SMI/2011/WindowsSettings">True</printerDriverIsolation>
<disableWindowFiltering xmlns="http://schemas.microsoft.com/SMI/2011/WindowsSettings">True</disableWindowFiltering>
<longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">True</longPathAware>
<activeCodePage xmlns="http://schemas.microsoft.com/SMI/2019/WindowsSettings">UTF-8</activeCodePage>
<heapType xmlns="http://schemas.microsoft.com/SMI/2020/WindowsSettings">SegmentHeap</heapType>
</windowsSettings>
</application>
</assembly>

View File

@ -1,70 +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.
*/
#include <windows.h>
IDI_ICON1 ICON "example.ico"
#if 0
#if (defined(WIDGET_USE_QMAKE) || defined(QUICK_USE_QMAKE))
#ifndef CREATEPROCESS_MANIFEST_RESOURCE_ID
#define CREATEPROCESS_MANIFEST_RESOURCE_ID 1
#endif
#ifndef RT_MANIFEST
#define RT_MANIFEST 24
#endif
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "example.manifest"
#endif
#endif
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,0
PRODUCTVERSION 1,0,0,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
#else
FILEFLAGS 0x0L
#endif
FILEOS VOS_NT_WINDOWS32
FILETYPE VFT_APP
FILESUBTYPE VFT2_UNKNOWN
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "CompanyName", "wangwenx190"
VALUE "FileDescription", "FramelessHelper Demo Application"
VALUE "FileVersion", "1.0.0.0"
VALUE "LegalCopyright", "MIT License"
VALUE "ProductName", "Demo"
VALUE "ProductVersion", "1.0.0.0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END

View File

@ -22,7 +22,28 @@
SOFTWARE.
]]
set(SOURCES
cmake_minimum_required(VERSION 3.20)
project(FramelessHelperDemo-Widget VERSION 1.0)
include(../../cmake/utils.cmake)
setup_project(
QT_PROJECT
LANGUAGES CXX RC
NO_WARNING
ENABLE_LTO
)
if(FRAMELESSHELPER_EXAMPLES_STANDALONE)
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)
find_package(FramelessHelper REQUIRED COMPONENTS Core Widgets)
endif()
add_executable(${PROJECT_NAME})
target_sources(${PROJECT_NAME} PRIVATE
../shared/log.h
../shared/log.cpp
../shared/settings.h
@ -33,51 +54,53 @@ set(SOURCES
)
if(WIN32)
enable_language(RC)
list(APPEND SOURCES
../shared/example.rc
../shared/example.manifest
set(__rc_path "${PROJECT_BINARY_DIR}/${PROJECT_NAME}.rc")
generate_win32_rc_file(
PATH "${__rc_path}"
VERSION "${PROJECT_VERSION}"
COMPANY "wangwenx190"
DESCRIPTION "FramelessHelper Demo Application: Widget"
COPYRIGHT "MIT License"
PRODUCT "FramelessHelper Demo"
ICONS "../shared/example.ico"
)
set(__manifest_path "${PROJECT_BINARY_DIR}/${PROJECT_NAME}.manifest")
generate_win32_manifest_file(
PATH "${__manifest_path}"
ID "org.wangwenx190.demo.Widget"
VERSION "${PROJECT_VERSION}"
VISTA_COMPAT
WIN7_COMPAT
WIN8_COMPAT
WIN8_1_COMPAT
WIN10_COMPAT
WIN11_COMPAT
XAML_ISLANDS_COMPAT
UTF8_CODEPAGE
)
target_sources(${PROJECT_NAME} PRIVATE
"${__rc_path}"
"${__manifest_path}"
)
endif()
add_executable(Widget ${SOURCES})
target_link_libraries(Widget PRIVATE
target_link_libraries(${PROJECT_NAME} PRIVATE
Qt${QT_VERSION_MAJOR}::Widgets
FramelessHelper::Core
FramelessHelper::Widgets
)
include(../../cmake/utils.cmake)
setup_gui_app(
TARGETS Widget
BUNDLE_ID org.wangwenx190.Widget
BUNDLE_VERSION 1.0.0
BUNDLE_VERSION_SHORT 1.0
TARGETS ${PROJECT_NAME}
BUNDLE_ID "org.wangwenx190.demo.Widget"
BUNDLE_VERSION "1.0.0"
BUNDLE_VERSION_SHORT "1.0"
)
set(__extra_flags)
if(NOT FRAMELESSHELPER_NO_PERMISSIVE_CHECKS)
list(APPEND __extra_flags PERMISSIVE)
endif()
if(FRAMELESSHELPER_ENABLE_SPECTRE)
list(APPEND __extra_flags SPECTRE)
endif()
if(FRAMELESSHELPER_ENABLE_EHCONTGUARD)
list(APPEND __extra_flags EHCONTGUARD)
endif()
if(FRAMELESSHELPER_ENABLE_INTELCET)
list(APPEND __extra_flags INTELCET)
endif()
if(FRAMELESSHELPER_ENABLE_INTELJCC)
list(APPEND __extra_flags INTELJCC)
endif()
if(FRAMELESSHELPER_ENABLE_CFGUARD)
list(APPEND __extra_flags CFGUARD)
endif()
setup_compile_params(TARGETS Widget ${__extra_flags})
if(FRAMELESSHELPER_EXAMPLES_DEPLOYQT)
set(__extra_flags)
if(FRAMELESSHELPER_NO_INSTALL)
set(__extra_flags NO_INSTALL)
endif()
deploy_qt_runtime(TARGET Widget ${__extra_flags})
deploy_qt_runtime(TARGET ${PROJECT_NAME} ${__extra_flags})
endif()

View File

@ -1,8 +1,6 @@
TEMPLATE = app
TARGET = Widget
TARGET = FramelessHelperDemo-Widget
QT += widgets
win32: CONFIG -= embed_manifest_exe
DEFINES += WIDGET_USE_QMAKE
HEADERS += \
../shared/log.h \
../shared/settings.h \
@ -12,6 +10,5 @@ SOURCES += \
../shared/settings.cpp \
widget.cpp \
main.cpp
win32: RC_FILE = ../shared/example.rc
include(../../qmake/core.pri)
include(../../qmake/widgets.pri)

View File

@ -193,7 +193,9 @@ 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.
// Call this function in your main() function if you are using FramelessHelper as a static library,
// it can make sure the resources bundled in the static library are correctly initialized.
// NOTE: This function is intentionally not inside any namespaces.
FRAMELESSHELPER_CORE_API void framelesshelpercore_initResource();
#endif // FRAMELESSHELPER_CORE_NO_BUNDLE_RESOURCE

View File

@ -22,6 +22,8 @@
SOFTWARE.
]]
include(GNUInstallDirs)
if(UNIX AND NOT APPLE)
if(FRAMELESSHELPER_NO_PRIVATE)
# Qt X11Extras is only available in Qt5.
@ -136,7 +138,7 @@ elseif(UNIX)
endif()
if(WIN32 AND NOT FRAMELESSHELPER_BUILD_STATIC)
set(__rc_path "${CMAKE_CURRENT_BINARY_DIR}/framelesshelpercore.rc")
set(__rc_path "${CMAKE_CURRENT_BINARY_DIR}/${SUB_PROJ_NAME}.rc")
generate_win32_rc_file(
PATH "${__rc_path}"
VERSION "${PROJECT_VERSION}"
@ -155,15 +157,12 @@ 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})
set(SUB_MOD_LIB_DIR "${CMAKE_INSTALL_LIBDIR}")
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})
set(SUB_MOD_LIB_DIR "${CMAKE_INSTALL_BINDIR}")
endif()
add_library(${SUB_PROJ_NAME} ${SUB_MOD_LIB_TYPE} ${ALL_SOURCES})
add_library(${PROJECT_NAME}::${SUB_PROJ_NAME} ALIAS ${SUB_PROJ_NAME})
add_library(${PROJECT_NAME}::${SUB_MOD_NAME} ALIAS ${SUB_PROJ_NAME})
@ -172,6 +171,8 @@ set_target_properties(${SUB_PROJ_NAME} PROPERTIES
SOVERSION "${PROJECT_VERSION_MAJOR}"
)
set(SUB_MOD_TARGETS ${SUB_PROJ_NAME})
set(__prefix "")
if(NOT WIN32)
set(__prefix "lib")
@ -212,11 +213,14 @@ if(NOT FRAMELESSHELPER_NO_BUNDLE_RESOURCE)
"resources/images/noise.png"
OUTPUT_TARGETS __qrc_targets
)
if(FRAMELESSHELPER_BUILD_STATIC AND __qrc_targets)
if(__qrc_targets)
foreach(__target ${__qrc_targets})
target_sources(${SUB_PROJ_NAME} PRIVATE
$<TARGET_OBJECTS:${__target}>
)
list(APPEND SUB_MOD_TARGETS ${__target})
if(FRAMELESSHELPER_BUILD_STATIC)
target_sources(${SUB_PROJ_NAME} PRIVATE
$<TARGET_OBJECTS:${__target}>
)
endif()
endforeach()
endif()
else()
@ -340,7 +344,6 @@ if(FRAMELESSHELPER_ENABLE_CFGUARD)
endif()
setup_compile_params(TARGETS ${SUB_PROJ_NAME} ${__extra_flags})
if(NOT FRAMELESSHELPER_NO_INSTALL)
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)
@ -360,7 +363,7 @@ if(NOT FRAMELESSHELPER_NO_INSTALL)
DESTINATION "${__inc_dir}/private"
)
install(
TARGETS ${SUB_PROJ_NAME}
TARGETS ${SUB_MOD_TARGETS}
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"

View File

@ -22,6 +22,8 @@
SOFTWARE.
]]
include(GNUInstallDirs)
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS QuickTemplates2 QuickControls2)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS QuickTemplates2 QuickControls2)
@ -82,7 +84,7 @@ set(SOURCES
)
if(WIN32 AND NOT FRAMELESSHELPER_BUILD_STATIC)
set(__rc_path "${CMAKE_CURRENT_BINARY_DIR}/framelesshelperquick.rc")
set(__rc_path "${CMAKE_CURRENT_BINARY_DIR}/${SUB_PROJ_NAME}.rc")
generate_win32_rc_file(
PATH "${__rc_path}"
VERSION "${PROJECT_VERSION}"
@ -101,15 +103,12 @@ 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})
set(SUB_MOD_LIB_DIR "${CMAKE_INSTALL_LIBDIR}")
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})
set(SUB_MOD_LIB_DIR "${CMAKE_INSTALL_BINDIR}")
endif()
add_library(${SUB_PROJ_NAME} ${SUB_MOD_LIB_TYPE} ${ALL_SOURCES})
add_library(${PROJECT_NAME}::${SUB_PROJ_NAME} ALIAS ${SUB_PROJ_NAME})
add_library(${PROJECT_NAME}::${SUB_MOD_NAME} ALIAS ${SUB_PROJ_NAME})
@ -118,6 +117,8 @@ set_target_properties(${SUB_PROJ_NAME} PROPERTIES
SOVERSION "${PROJECT_VERSION_MAJOR}"
)
set(SUB_MOD_TARGETS ${SUB_PROJ_NAME})
set(__prefix "")
if(NOT WIN32)
set(__prefix "lib")
@ -162,17 +163,20 @@ if(QT_VERSION VERSION_GREATER_EQUAL "6.2")
OUTPUT_DIRECTORY "${__import_dir}"
RESOURCE_PREFIX "/"
#NO_RESOURCE_TARGET_PATH # Can't be used for non-executables.
OUTPUT_TARGETS __qrc_targets
OUTPUT_TARGETS __qml_targets
IMPORTS
QtQml/auto
QtQuick/auto
QtQuick.Controls.Basic/auto
)
if(FRAMELESSHELPER_BUILD_STATIC AND __qrc_targets)
foreach(__target ${__qrc_targets})
target_sources(${SUB_PROJ_NAME} PRIVATE
$<TARGET_OBJECTS:${__target}>
)
if(__qml_targets)
foreach(__target ${__qml_targets})
list(APPEND SUB_MOD_TARGETS ${__target})
if(FRAMELESSHELPER_BUILD_STATIC)
target_sources(${SUB_PROJ_NAME} PRIVATE
$<TARGET_OBJECTS:${__target}>
)
endif()
endforeach()
endif()
if(NOT FRAMELESSHELPER_NO_INSTALL)
@ -295,7 +299,6 @@ if(FRAMELESSHELPER_ENABLE_CFGUARD)
endif()
setup_compile_params(TARGETS ${SUB_PROJ_NAME} ${__extra_flags})
if(NOT FRAMELESSHELPER_NO_INSTALL)
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)
@ -315,7 +318,7 @@ if(NOT FRAMELESSHELPER_NO_INSTALL)
DESTINATION "${__inc_dir}/private"
)
install(
TARGETS ${SUB_PROJ_NAME}
TARGETS ${SUB_MOD_TARGETS}
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"

View File

@ -22,6 +22,8 @@
SOFTWARE.
]]
include(GNUInstallDirs)
set(SUB_MOD_NAME Widgets)
set(SUB_PROJ_NAME ${PROJECT_NAME}${SUB_MOD_NAME})
set(SUB_PROJ_PATH ${PROJECT_NAME}/${SUB_MOD_NAME})
@ -70,7 +72,7 @@ set(SOURCES
)
if(WIN32 AND NOT FRAMELESSHELPER_BUILD_STATIC)
set(__rc_path "${CMAKE_CURRENT_BINARY_DIR}/framelesshelperwidgets.rc")
set(__rc_path "${CMAKE_CURRENT_BINARY_DIR}/${SUB_PROJ_NAME}.rc")
generate_win32_rc_file(
PATH "${__rc_path}"
VERSION "${PROJECT_VERSION}"
@ -89,15 +91,12 @@ 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})
set(SUB_MOD_LIB_DIR "${CMAKE_INSTALL_LIBDIR}")
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})
set(SUB_MOD_LIB_DIR "${CMAKE_INSTALL_BINDIR}")
endif()
add_library(${SUB_PROJ_NAME} ${SUB_MOD_LIB_TYPE} ${ALL_SOURCES})
add_library(${PROJECT_NAME}::${SUB_PROJ_NAME} ALIAS ${SUB_PROJ_NAME})
add_library(${PROJECT_NAME}::${SUB_MOD_NAME} ALIAS ${SUB_PROJ_NAME})
@ -216,7 +215,6 @@ if(FRAMELESSHELPER_ENABLE_CFGUARD)
endif()
setup_compile_params(TARGETS ${SUB_PROJ_NAME} ${__extra_flags})
if(NOT FRAMELESSHELPER_NO_INSTALL)
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)