From e2dfca2272d84005039fe96bc8e5c27045b70366 Mon Sep 17 00:00:00 2001
From: Mentalflow <312902918@qq.com>
Date: Thu, 28 Mar 2024 08:44:18 +0800
Subject: [PATCH] CMakeLists: Update and simplify.
---
example/.cmake/MacOSXBundleInfo.plist.in | 45 ++++++++++++++++++++++++
example/.cmake/win_app.rc.in | 37 +++++++++++++++++++
example/CMakeLists.txt | 32 +++++++++++------
lib_source/CMakeLists.txt | 2 ++
4 files changed, 105 insertions(+), 11 deletions(-)
create mode 100644 example/.cmake/MacOSXBundleInfo.plist.in
create mode 100644 example/.cmake/win_app.rc.in
diff --git a/example/.cmake/MacOSXBundleInfo.plist.in b/example/.cmake/MacOSXBundleInfo.plist.in
new file mode 100644
index 0000000..ff787e4
--- /dev/null
+++ b/example/.cmake/MacOSXBundleInfo.plist.in
@@ -0,0 +1,45 @@
+
+
+
+
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundlePackageType
+ APPL
+
+ CFBundleName
+ ${MACOSX_BUNDLE_BUNDLE_NAME}
+ CFBundleIdentifier
+ ${MACOSX_BUNDLE_GUI_IDENTIFIER}
+ CFBundleExecutable
+ ${MACOSX_BUNDLE_EXECUTABLE_NAME}
+
+ CFBundleVersion
+ ${MACOSX_BUNDLE_BUNDLE_VERSION}
+ CFBundleShortVersionString
+ ${MACOSX_BUNDLE_SHORT_VERSION_STRING}
+
+ LSMinimumSystemVersion
+ ${CMAKE_OSX_DEPLOYMENT_TARGET}
+
+ NSHumanReadableCopyright
+ ${MACOSX_BUNDLE_COPYRIGHT}
+
+ CFBundleIconFile
+ ${MACOSX_BUNDLE_ICON_FILE}
+
+ CFBundleDevelopmentRegion
+ ${MACOSX_BUNDLE_DEVELOPMENT_REGION}
+ CFBundleAllowMixedLocalizations
+
+
+ NSHighResolutionCapable
+
+
+ NSPrincipalClass
+ NSApplication
+
+ NSSupportsAutomaticGraphicsSwitching
+
+
+
\ No newline at end of file
diff --git a/example/.cmake/win_app.rc.in b/example/.cmake/win_app.rc.in
new file mode 100644
index 0000000..b911a05
--- /dev/null
+++ b/example/.cmake/win_app.rc.in
@@ -0,0 +1,37 @@
+#include
+
+IDI_ICON1 ICON "${PROJECT_SOURCE_DIR}/imgs/icon.ico"
+
+VS_VERSION_INFO VERSIONINFO
+FILEVERSION ${version_str}
+PRODUCTVERSION ${version_str}
+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 "Comments", "Made by Mentalflow."
+ VALUE "CompanyName", "${PROJECT_COMPANY}"
+ VALUE "FileDescription", "${PROJECT_COPYRIGHT}"
+ VALUE "FileVersion", "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}"
+ VALUE "InternalName", "${PROJECT_BUNDLE_NAME}.exe"
+ VALUE "LegalCopyright", "${PROJECT_COPYRIGHT}"
+ VALUE "OriginalFilename", "${PROJECT_BUNDLE_NAME}.exe"
+ VALUE "ProductName", "${PROJECT_BUNDLE_NAME}"
+ VALUE "ProductVersion", "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x409, 1200
+ END
+END
\ No newline at end of file
diff --git a/example/CMakeLists.txt b/example/CMakeLists.txt
index d599c5e..ecdfa74 100644
--- a/example/CMakeLists.txt
+++ b/example/CMakeLists.txt
@@ -4,6 +4,8 @@ project(RibbonUIAPP VERSION ${PROJECT_VERSION} LANGUAGES CXX)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
+list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/.cmake/)
+
if(QT_VERSION VERSION_GREATER_EQUAL "6.3")
qt_standard_project_setup()
qt_policy(SET QTP0001 NEW)
@@ -17,11 +19,21 @@ if(APPLE)
set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64" CACHE STRING "" FORCE)
endif()
+string(TIMESTAMP TIME_YEAR %Y)
set(PROJECT_COMPANY "Mentalflow's Lab")
-set(PROJECT_COPYRIGHT "Copyright (c) 2024 Mentalflow's Lab. All rights reserved.")
+set(PROJECT_COPYRIGHT "Copyright (c) ${TIME_YEAR} Mentalflow's Lab. All rights reserved.")
set(PROJECT_DOMAIN "dev.ourdocs.cn.ribbonuiapp")
set(PROJECT_BUNDLE_NAME RibbonUI-APP)
+set(MACOSX_BUNDLE_GUI_IDENTIFIER ${PROJECT_DOMAIN})
+set(MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION})
+set(MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR})
+set(MACOSX_BUNDLE_BUNDLE_NAME ${PROJECT_BUNDLE_NAME})
+set(MACOSX_BUNDLE_COPYRIGHT ${PROJECT_COPYRIGHT})
+set(MACOSX_BUNDLE_DEVELOPMENT_REGION "Chinese")
+set(CMAKE_OSX_DEPLOYMENT_TARGET "11.0" CACHE STRING "Minimum OS X deployment version" FORCE)
+set(MACOSX_BUNDLE_EXECUTABLE_NAME ${PROJECT_BUNDLE_NAME})
+
set(version_str "${PROJECT_VERSION_MAJOR},${PROJECT_VERSION_MINOR},${PROJECT_VERSION_PATCH}")
add_definitions(-DRIBBONUIAPP_VERSION=${version_str})
@@ -36,10 +48,11 @@ else()
endif()
if (WIN32)
- set(app_icon_resource_windows "${CMAKE_CURRENT_SOURCE_DIR}/resources/icon.rc")
+ configure_file(.cmake/win_app.rc.in ${CMAKE_BINARY_DIR}/win_app.rc)
+ set(app_icon_resource_windows ${CMAKE_BINARY_DIR}/win_app.rc)
qt_add_executable(${PROJECT_NAME}
${sources_files}
- "${CMAKE_CURRENT_SOURCE_DIR}/resources/icon.rc"
+ ${app_icon_resource_windows}
)
file(TO_CMAKE_PATH "/" PATH_SEPARATOR)
if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
@@ -55,8 +68,9 @@ if (WIN32)
${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
)
elseif(APPLE)
+ configure_file(.cmake/MacOSXBundleInfo.plist.in ${CMAKE_BINARY_DIR}/Info.plist)
set(MACOSX_BUNDLE_ICON_FILE AppIcon)
- set(App_ICON "${CMAKE_CURRENT_SOURCE_DIR}/resources/imgs/AppIcon.icns")
+ set(App_ICON "${PROJECT_SOURCE_DIR}/resources/imgs/AppIcon.icns")
set_source_files_properties(${App_ICON} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
qt_add_executable(${PROJECT_NAME}
${sources_files}
@@ -73,15 +87,11 @@ qt_add_qml_module(${PROJECT_NAME}
VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
RESOURCE_PREFIX "/qt/qml/"
QML_FILES example.qml components/RibbonWindow.qml
- RESOURCES resources/imgs/heart.png resources/imgs/search.png resources/icon.rc
+ RESOURCES resources/imgs/heart.png resources/imgs/search.png
)
set_target_properties(${PROJECT_NAME} PROPERTIES
- MACOSX_BUNDLE_GUI_IDENTIFIER ${PROJECT_DOMAIN}
- MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
- MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
- MACOSX_BUNDLE_BUNDLE_NAME ${PROJECT_BUNDLE_NAME}
- MACOSX_BUNDLE_COPYRIGHT ${PROJECT_COPYRIGHT}
+ MACOSX_BUNDLE_INFO_PLIST ${CMAKE_BINARY_DIR}/Info.plist
MACOSX_BUNDLE TRUE
WIN32_EXECUTABLE TRUE
OUTPUT_NAME ${PROJECT_BUNDLE_NAME}
@@ -106,4 +116,4 @@ else()
endif()
target_compile_definitions(${PROJECT_NAME} PRIVATE $<$,$>:QT_QML_DEBUG>)
-target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
+target_include_directories(${PROJECT_NAME} PUBLIC ${PROJECT_SOURCE_DIR})
diff --git a/lib_source/CMakeLists.txt b/lib_source/CMakeLists.txt
index 6e7bd3d..afcfdb6 100644
--- a/lib_source/CMakeLists.txt
+++ b/lib_source/CMakeLists.txt
@@ -4,6 +4,8 @@ project(RibbonUI VERSION ${PROJECT_VERSION} LANGUAGES CXX)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
+list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/.cmake/)
+
if(QT_VERSION VERSION_GREATER_EQUAL "6.3")
qt_standard_project_setup()
qt_policy(SET QTP0001 NEW)