forked from github_mirror/framelesshelper
Add Universal build for macOS and compile error fixed. (#217)
* Add Universal build for macOS. * Fix compile error in example quick. * Use cmake_dependent_option instead of option.
This commit is contained in:
parent
84a9a76021
commit
84745db4d9
|
@ -30,6 +30,8 @@ project(FramelessHelper
|
||||||
HOMEPAGE_URL "https://github.com/wangwenx190/framelesshelper/"
|
HOMEPAGE_URL "https://github.com/wangwenx190/framelesshelper/"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
include(CMakeDependentOption)
|
||||||
|
|
||||||
option(FRAMELESSHELPER_BUILD_STATIC "Build FramelessHelper as a static library." OFF)
|
option(FRAMELESSHELPER_BUILD_STATIC "Build FramelessHelper as a static library." OFF)
|
||||||
option(FRAMELESSHELPER_BUILD_WIDGETS "Build FramelessHelper's Widgets module." ON)
|
option(FRAMELESSHELPER_BUILD_WIDGETS "Build FramelessHelper's Widgets module." ON)
|
||||||
option(FRAMELESSHELPER_BUILD_QUICK "Build FramelessHelper's Quick module." ON)
|
option(FRAMELESSHELPER_BUILD_QUICK "Build FramelessHelper's Quick module." ON)
|
||||||
|
@ -49,6 +51,12 @@ option(FRAMELESSHELPER_ENABLE_INTELCET "Enable Intel CET." OFF)
|
||||||
option(FRAMELESSHELPER_ENABLE_INTELJCC "Enable Intel JCC." OFF)
|
option(FRAMELESSHELPER_ENABLE_INTELJCC "Enable Intel JCC." OFF)
|
||||||
option(FRAMELESSHELPER_ENABLE_CFGUARD "Enable Control Flow Guard (CFG)." OFF)
|
option(FRAMELESSHELPER_ENABLE_CFGUARD "Enable Control Flow Guard (CFG)." OFF)
|
||||||
option(FRAMELESSHELPER_EXAMPLES_STANDALONE "Build the demo projects as standalone CMake projects." OFF)
|
option(FRAMELESSHELPER_EXAMPLES_STANDALONE "Build the demo projects as standalone CMake projects." OFF)
|
||||||
|
cmake_dependent_option(FRAMELESSHELPER_ENABLE_UNIVERSAL_BUILD "macOS only: build universal library/exemple for Mac." ON APPLE OFF)
|
||||||
|
|
||||||
|
if(NOT APPLE AND FRAMELESSHELPER_ENABLE_UNIVERSAL_BUILD)
|
||||||
|
message(WARNING "Your OS is not macOS, universal library will not be generated.")
|
||||||
|
set(FRAMELESSHELPER_ENABLE_UNIVERSAL_BUILD OFF)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(FRAMELESSHELPER_NO_BUNDLE_RESOURCE)
|
if(FRAMELESSHELPER_NO_BUNDLE_RESOURCE)
|
||||||
message(WARNING "Nothing will be embeded into the FramelessHelper library, the chrome buttons will have no icon.")
|
message(WARNING "Nothing will be embeded into the FramelessHelper library, the chrome buttons will have no icon.")
|
||||||
|
@ -191,5 +199,6 @@ if(NOT FRAMELESSHELPER_NO_SUMMARY)
|
||||||
message("Enable Intel JCC: ${FRAMELESSHELPER_ENABLE_INTELJCC}")
|
message("Enable Intel JCC: ${FRAMELESSHELPER_ENABLE_INTELJCC}")
|
||||||
message("Enable Control Flow Guard (CFG): ${FRAMELESSHELPER_ENABLE_CFGUARD}")
|
message("Enable Control Flow Guard (CFG): ${FRAMELESSHELPER_ENABLE_CFGUARD}")
|
||||||
message("Build standalone demo projects: ${FRAMELESSHELPER_EXAMPLES_STANDALONE}")
|
message("Build standalone demo projects: ${FRAMELESSHELPER_EXAMPLES_STANDALONE}")
|
||||||
|
message("[macOS]: Build universal library/exemple: ${FRAMELESSHELPER_ENABLE_UNIVERSAL_BUILD}")
|
||||||
message("-----------------------------------------------------------------")
|
message("-----------------------------------------------------------------")
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -24,6 +24,10 @@
|
||||||
|
|
||||||
set(DEMO_NAME FramelessHelperDemo-Dialog)
|
set(DEMO_NAME FramelessHelperDemo-Dialog)
|
||||||
|
|
||||||
|
if(FRAMELESSHELPER_ENABLE_UNIVERSAL_BUILD)
|
||||||
|
set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64" CACHE STRING "" FORCE)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(FRAMELESSHELPER_EXAMPLES_STANDALONE)
|
if(FRAMELESSHELPER_EXAMPLES_STANDALONE)
|
||||||
cmake_minimum_required(VERSION 3.20)
|
cmake_minimum_required(VERSION 3.20)
|
||||||
project(${DEMO_NAME} VERSION 1.0)
|
project(${DEMO_NAME} VERSION 1.0)
|
||||||
|
|
|
@ -24,6 +24,10 @@
|
||||||
|
|
||||||
set(DEMO_NAME FramelessHelperDemo-MainWindow)
|
set(DEMO_NAME FramelessHelperDemo-MainWindow)
|
||||||
|
|
||||||
|
if(FRAMELESSHELPER_ENABLE_UNIVERSAL_BUILD)
|
||||||
|
set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64" CACHE STRING "" FORCE)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(FRAMELESSHELPER_EXAMPLES_STANDALONE)
|
if(FRAMELESSHELPER_EXAMPLES_STANDALONE)
|
||||||
cmake_minimum_required(VERSION 3.20)
|
cmake_minimum_required(VERSION 3.20)
|
||||||
project(${DEMO_NAME} VERSION 1.0)
|
project(${DEMO_NAME} VERSION 1.0)
|
||||||
|
|
|
@ -24,6 +24,10 @@
|
||||||
|
|
||||||
set(DEMO_NAME FramelessHelperDemo-OpenGLWidget)
|
set(DEMO_NAME FramelessHelperDemo-OpenGLWidget)
|
||||||
|
|
||||||
|
if(FRAMELESSHELPER_ENABLE_UNIVERSAL_BUILD)
|
||||||
|
set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64" CACHE STRING "" FORCE)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(FRAMELESSHELPER_EXAMPLES_STANDALONE)
|
if(FRAMELESSHELPER_EXAMPLES_STANDALONE)
|
||||||
cmake_minimum_required(VERSION 3.20)
|
cmake_minimum_required(VERSION 3.20)
|
||||||
project(${DEMO_NAME} VERSION 1.0)
|
project(${DEMO_NAME} VERSION 1.0)
|
||||||
|
|
|
@ -24,6 +24,10 @@
|
||||||
|
|
||||||
set(DEMO_NAME FramelessHelperDemo-Quick)
|
set(DEMO_NAME FramelessHelperDemo-Quick)
|
||||||
|
|
||||||
|
if(FRAMELESSHELPER_ENABLE_UNIVERSAL_BUILD)
|
||||||
|
set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64" CACHE STRING "" FORCE)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(FRAMELESSHELPER_EXAMPLES_STANDALONE)
|
if(FRAMELESSHELPER_EXAMPLES_STANDALONE)
|
||||||
cmake_minimum_required(VERSION 3.20)
|
cmake_minimum_required(VERSION 3.20)
|
||||||
project(${DEMO_NAME} VERSION 1.0)
|
project(${DEMO_NAME} VERSION 1.0)
|
||||||
|
|
|
@ -136,7 +136,7 @@ int main(int argc, char *argv[])
|
||||||
}, Qt::QueuedConnection);
|
}, Qt::QueuedConnection);
|
||||||
#elif !QMLTC_ENABLED
|
#elif !QMLTC_ENABLED
|
||||||
const QMetaObject::Connection connection = QObject::connect(
|
const QMetaObject::Connection connection = QObject::connect(
|
||||||
engine.get(), &QQmlApplicationEngine::objectCreated, &application,
|
engine.get(), &QQmlApplicationEngine::objectCreated, application.get(),
|
||||||
[&mainUrl, &connection](QObject *object, const QUrl &url) {
|
[&mainUrl, &connection](QObject *object, const QUrl &url) {
|
||||||
if (url != mainUrl) {
|
if (url != mainUrl) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -24,6 +24,10 @@
|
||||||
|
|
||||||
set(DEMO_NAME FramelessHelperDemo-Widget)
|
set(DEMO_NAME FramelessHelperDemo-Widget)
|
||||||
|
|
||||||
|
if(FRAMELESSHELPER_ENABLE_UNIVERSAL_BUILD)
|
||||||
|
set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64" CACHE STRING "" FORCE)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(FRAMELESSHELPER_EXAMPLES_STANDALONE)
|
if(FRAMELESSHELPER_EXAMPLES_STANDALONE)
|
||||||
cmake_minimum_required(VERSION 3.20)
|
cmake_minimum_required(VERSION 3.20)
|
||||||
project(${DEMO_NAME} VERSION 1.0)
|
project(${DEMO_NAME} VERSION 1.0)
|
||||||
|
|
|
@ -24,6 +24,10 @@
|
||||||
|
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
|
|
||||||
|
if(FRAMELESSHELPER_ENABLE_UNIVERSAL_BUILD)
|
||||||
|
set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64" CACHE STRING "" FORCE)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(UNIX AND NOT APPLE)
|
if(UNIX AND NOT APPLE)
|
||||||
if(FRAMELESSHELPER_NO_PRIVATE)
|
if(FRAMELESSHELPER_NO_PRIVATE)
|
||||||
# Qt X11Extras is only available in Qt5.
|
# Qt X11Extras is only available in Qt5.
|
||||||
|
|
|
@ -24,6 +24,10 @@
|
||||||
|
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
|
|
||||||
|
if(FRAMELESSHELPER_ENABLE_UNIVERSAL_BUILD)
|
||||||
|
set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64" CACHE STRING "" FORCE)
|
||||||
|
endif()
|
||||||
|
|
||||||
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS QuickTemplates2 QuickControls2)
|
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS QuickTemplates2 QuickControls2)
|
||||||
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS QuickTemplates2 QuickControls2)
|
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS QuickTemplates2 QuickControls2)
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,10 @@
|
||||||
|
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
|
|
||||||
|
if(FRAMELESSHELPER_ENABLE_UNIVERSAL_BUILD)
|
||||||
|
set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64" CACHE STRING "" FORCE)
|
||||||
|
endif()
|
||||||
|
|
||||||
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(SUB_PROJ_PATH ${PROJECT_NAME}/${SUB_MOD_NAME})
|
||||||
|
|
Loading…
Reference in New Issue