From 4df552d526df9ee11e85db179ca2c0486f314b7a Mon Sep 17 00:00:00 2001 From: Yuhang Zhao Date: Mon, 4 Sep 2023 18:08:18 +0800 Subject: [PATCH] cmake: move config system to cmake --- CMakeLists.txt | 142 ++++++++++++++++++++++++++++ src/core/CMakeLists.txt | 59 +----------- src/core/framelesshelper.config.in | 49 ---------- src/core/framelesshelper.version.in | 51 ---------- 4 files changed, 145 insertions(+), 156 deletions(-) delete mode 100644 src/core/framelesshelper.config.in delete mode 100644 src/core/framelesshelper.version.in diff --git a/CMakeLists.txt b/CMakeLists.txt index e175b75b..8d94ffe1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -165,6 +165,148 @@ if(FRAMELESSHELPER_BUILD_QUICK AND NOT TARGET Qt${QT_VERSION_MAJOR}::Quick) set(FRAMELESSHELPER_BUILD_QUICK OFF) endif() +set(FRAMELESSHELPER_LICENSE_HEADER "/* +* 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. +*/") + +set(FRAMELESSHELPER_CMAKE_WARNING "// Generated automatically by CMake. +// WARNING! DO NOT EDIT THIS FILE MANUALLY! +// ALL CHANGES WILL BE LOST AFTER RE-CONFIGURING! +// Also please do not include this file directly, +// it's designed to be included by FramelessHelper's own headers.") + +### VERSION BEGIN ### +set(FRAMELESSHELPER_VERSION_FILE "${PROJECT_BINARY_DIR}/framelesshelper.version") +if(NOT EXISTS "${FRAMELESSHELPER_VERSION_FILE}") + set(__version_content "${FRAMELESSHELPER_LICENSE_HEADER} + +${FRAMELESSHELPER_CMAKE_WARNING} + +#ifndef _FRAMELESSHELPER_VERSION_DEFINED_ +#define _FRAMELESSHELPER_VERSION_DEFINED_ + +[[maybe_unused]] inline constexpr const int FRAMELESSHELPER_VERSION_MAJOR = ${PROJECT_VERSION_MAJOR}; +[[maybe_unused]] inline constexpr const int FRAMELESSHELPER_VERSION_MINOR = ${PROJECT_VERSION_MINOR}; +[[maybe_unused]] inline constexpr const int FRAMELESSHELPER_VERSION_PATCH = ${PROJECT_VERSION_PATCH}; +//[[maybe_unused]] inline constexpr const int FRAMELESSHELPER_VERSION_TWEAK = ${PROJECT_VERSION_TWEAK}; +[[maybe_unused]] inline constexpr const char FRAMELESSHELPER_VERSION_STR[] = \"${PROJECT_VERSION}\"; +[[maybe_unused]] inline constexpr const char FRAMELESSHELPER_COMMIT_STR[] = \"${PROJECT_VERSION_COMMIT}\"; +[[maybe_unused]] inline constexpr const char FRAMELESSHELPER_COMPILE_DATETIME_STR[] = \"${PROJECT_COMPILE_DATETIME}\"; + +#define __FRAMELESSHELPER_VERSION_MAJOR__ ${PROJECT_VERSION_MAJOR} +#define __FRAMELESSHELPER_VERSION_MINOR__ ${PROJECT_VERSION_MINOR} +#define __FRAMELESSHELPER_VERSION_PATCH__ ${PROJECT_VERSION_PATCH} +//#define __FRAMELESSHELPER_VERSION_TWEAK__ ${PROJECT_VERSION_TWEAK} +#define __FRAMELESSHELPER_VERSION__ ${PROJECT_VERSION_HEX} +#define __FRAMELESSHELPER__ ${PROJECT_VERSION_HEX} + +#endif // _FRAMELESSHELPER_VERSION_DEFINED_ +") + file(WRITE "${FRAMELESSHELPER_VERSION_FILE}" "${__version_content}") + unset(__version_content) +endif() +### VERSION END ### + +### MODULAR CONFIGURATION BEGIN ### +set(FRAMELESSHELPER_CONFIG_FILE "${PROJECT_BINARY_DIR}/framelesshelper.config") +if(NOT EXISTS "${FRAMELESSHELPER_CONFIG_FILE}") + set(FRAMELESSHELPER_FEATURE_static_build "-1") + if(FRAMELESSHELPER_BUILD_STATIC) + set(FRAMELESSHELPER_FEATURE_static_build "1") + endif() + set(FRAMELESSHELPER_FEATURE_widgets "-1") + if(FRAMELESSHELPER_BUILD_WIDGETS) + set(FRAMELESSHELPER_FEATURE_widgets "1") + endif() + set(FRAMELESSHELPER_FEATURE_quick "-1") + if(FRAMELESSHELPER_BUILD_QUICK) + set(FRAMELESSHELPER_FEATURE_quick "1") + endif() + set(FRAMELESSHELPER_FEATURE_debug_output "-1") + if(NOT FRAMELESSHELPER_NO_DEBUG_OUTPUT) + set(FRAMELESSHELPER_FEATURE_debug_output "1") + endif() + set(FRAMELESSHELPER_FEATURE_bundle_resource "-1") + if(NOT FRAMELESSHELPER_NO_BUNDLE_RESOURCE) + set(FRAMELESSHELPER_FEATURE_bundle_resource "1") + endif() + set(FRAMELESSHELPER_FEATURE_private_qt "-1") + if(NOT FRAMELESSHELPER_NO_PRIVATE) + set(FRAMELESSHELPER_FEATURE_private_qt "1") + endif() + set(FRAMELESSHELPER_FEATURE_window "-1") + if(NOT FRAMELESSHELPER_NO_WINDOW) + set(FRAMELESSHELPER_FEATURE_window "1") + endif() + set(FRAMELESSHELPER_FEATURE_titlebar "-1") + if(NOT FRAMELESSHELPER_NO_TITLEBAR) + set(FRAMELESSHELPER_FEATURE_titlebar "1") + endif() + set(FRAMELESSHELPER_FEATURE_translation "-1") + if(NOT FRAMELESSHELPER_NO_TRANSLATION) + set(FRAMELESSHELPER_FEATURE_translation "1") + endif() + set(FRAMELESSHELPER_FEATURE_mica_material "-1") + if(NOT FRAMELESSHELPER_NO_MICA_MATERIAL) + set(FRAMELESSHELPER_FEATURE_mica_material "1") + endif() + set(FRAMELESSHELPER_FEATURE_border_painter "-1") + if(NOT FRAMELESSHELPER_NO_BORDER_PAINTER) + set(FRAMELESSHELPER_FEATURE_border_painter "1") + endif() + set(FRAMELESSHELPER_FEATURE_system_button "-1") + if(NOT FRAMELESSHELPER_NO_SYSTEM_BUTTON) + set(FRAMELESSHELPER_FEATURE_system_button "1") + endif() + set(__config_content "${FRAMELESSHELPER_LICENSE_HEADER} + +${FRAMELESSHELPER_CMAKE_WARNING} + +#pragma once + +#ifndef _FRAMELESSHELPER_CONFIG_DEFINED_ +#define _FRAMELESSHELPER_CONFIG_DEFINED_ + +#define FRAMELESSHELPER_FEATURE_static_build ${FRAMELESSHELPER_FEATURE_static_build} +#define FRAMELESSHELPER_FEATURE_widgets ${FRAMELESSHELPER_FEATURE_widgets} +#define FRAMELESSHELPER_FEATURE_quick ${FRAMELESSHELPER_FEATURE_quick} +#define FRAMELESSHELPER_FEATURE_debug_output ${FRAMELESSHELPER_FEATURE_debug_output} +#define FRAMELESSHELPER_FEATURE_bundle_resource ${FRAMELESSHELPER_FEATURE_bundle_resource} +#define FRAMELESSHELPER_FEATURE_private_qt ${FRAMELESSHELPER_FEATURE_private_qt} +#define FRAMELESSHELPER_FEATURE_window ${FRAMELESSHELPER_FEATURE_window} +#define FRAMELESSHELPER_FEATURE_titlebar ${FRAMELESSHELPER_FEATURE_titlebar} +#define FRAMELESSHELPER_FEATURE_translation ${FRAMELESSHELPER_FEATURE_translation} +#define FRAMELESSHELPER_FEATURE_mica_material ${FRAMELESSHELPER_FEATURE_mica_material} +#define FRAMELESSHELPER_FEATURE_border_painter ${FRAMELESSHELPER_FEATURE_border_painter} +#define FRAMELESSHELPER_FEATURE_system_button ${FRAMELESSHELPER_FEATURE_system_button} + +#endif // _FRAMELESSHELPER_CONFIG_DEFINED_ +") + file(WRITE "${FRAMELESSHELPER_CONFIG_FILE}" "${__config_content}") + unset(__config_content) +endif() +### MODULAR CONFIGURATION END ### + if(TARGET Qt${QT_VERSION_MAJOR}::Core AND TARGET Qt${QT_VERSION_MAJOR}::Gui) add_subdirectory(src) else() diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index f1ac6297..9afd1162 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -50,55 +50,6 @@ if(UNIX AND NOT APPLE) endif() endif() -set(FRAMELESSHELPER_FEATURE_static_build "-1") -if(FRAMELESSHELPER_BUILD_STATIC) - set(FRAMELESSHELPER_FEATURE_static_build "1") -endif() -set(FRAMELESSHELPER_FEATURE_widgets "-1") -if(FRAMELESSHELPER_BUILD_WIDGETS) - set(FRAMELESSHELPER_FEATURE_widgets "1") -endif() -set(FRAMELESSHELPER_FEATURE_quick "-1") -if(FRAMELESSHELPER_BUILD_QUICK) - set(FRAMELESSHELPER_FEATURE_quick "1") -endif() -set(FRAMELESSHELPER_FEATURE_debug_output "-1") -if(NOT FRAMELESSHELPER_NO_DEBUG_OUTPUT) - set(FRAMELESSHELPER_FEATURE_debug_output "1") -endif() -set(FRAMELESSHELPER_FEATURE_bundle_resource "-1") -if(NOT FRAMELESSHELPER_NO_BUNDLE_RESOURCE) - set(FRAMELESSHELPER_FEATURE_bundle_resource "1") -endif() -set(FRAMELESSHELPER_FEATURE_private_qt "-1") -if(NOT FRAMELESSHELPER_NO_PRIVATE) - set(FRAMELESSHELPER_FEATURE_private_qt "1") -endif() -set(FRAMELESSHELPER_FEATURE_window "-1") -if(NOT FRAMELESSHELPER_NO_WINDOW) - set(FRAMELESSHELPER_FEATURE_window "1") -endif() -set(FRAMELESSHELPER_FEATURE_titlebar "-1") -if(NOT FRAMELESSHELPER_NO_TITLEBAR) - set(FRAMELESSHELPER_FEATURE_titlebar "1") -endif() -set(FRAMELESSHELPER_FEATURE_translation "-1") -if(NOT FRAMELESSHELPER_NO_TRANSLATION) - set(FRAMELESSHELPER_FEATURE_translation "1") -endif() -set(FRAMELESSHELPER_FEATURE_mica_material "-1") -if(NOT FRAMELESSHELPER_NO_MICA_MATERIAL) - set(FRAMELESSHELPER_FEATURE_mica_material "1") -endif() -set(FRAMELESSHELPER_FEATURE_border_painter "-1") -if(NOT FRAMELESSHELPER_NO_BORDER_PAINTER) - set(FRAMELESSHELPER_FEATURE_border_painter "1") -endif() -set(FRAMELESSHELPER_FEATURE_system_button "-1") -if(NOT FRAMELESSHELPER_NO_SYSTEM_BUTTON) - set(FRAMELESSHELPER_FEATURE_system_button "1") -endif() - set(SUB_MODULE Core) set(SUB_MODULE_FULL_NAME ${PROJECT_NAME}${SUB_MODULE}) set(SUB_MODULE_TARGET ${SUB_MODULE_FULL_NAME}) @@ -106,14 +57,9 @@ set(SUB_MODULE_PATH ${PROJECT_NAME}/${SUB_MODULE}) set(INCLUDE_PREFIX ../../include/${SUB_MODULE_PATH}) -configure_file(framelesshelper.version.in - ${CMAKE_CURRENT_BINARY_DIR}/framelesshelper.version @ONLY) -configure_file(framelesshelper.config.in - ${CMAKE_CURRENT_BINARY_DIR}/framelesshelper.config @ONLY) - set(PUBLIC_HEADERS - ${CMAKE_CURRENT_BINARY_DIR}/framelesshelper.version - ${CMAKE_CURRENT_BINARY_DIR}/framelesshelper.config + ${FRAMELESSHELPER_VERSION_FILE} + ${FRAMELESSHELPER_CONFIG_FILE} ${INCLUDE_PREFIX}/framelesshelpercore_global.h ${INCLUDE_PREFIX}/framelesshelper_qt.h ${INCLUDE_PREFIX}/framelessmanager.h @@ -323,6 +269,7 @@ target_include_directories(${SUB_MODULE_TARGET} PUBLIC "$" "$" "$" + "$" "$" "$" "$" diff --git a/src/core/framelesshelper.config.in b/src/core/framelesshelper.config.in deleted file mode 100644 index e7ba7525..00000000 --- a/src/core/framelesshelper.config.in +++ /dev/null @@ -1,49 +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. - */ - -// Generated automatically by CMake. -// WARNING! DO NOT EDIT THIS FILE MANUALLY! -// ALL CHANGES WILL BE LOST AFTER RE-CONFIGURING! -// Also please do not include this file directly, -// it's designed to be included by FramelessHelper's own headers. - -#pragma once - -#ifndef _FRAMELESSHELPER_CONFIG_DEFINED_ -#define _FRAMELESSHELPER_CONFIG_DEFINED_ - -#define FRAMELESSHELPER_FEATURE_static_build @FRAMELESSHELPER_FEATURE_static_build@ -#define FRAMELESSHELPER_FEATURE_widgets @FRAMELESSHELPER_FEATURE_widgets@ -#define FRAMELESSHELPER_FEATURE_quick @FRAMELESSHELPER_FEATURE_quick@ -#define FRAMELESSHELPER_FEATURE_debug_output @FRAMELESSHELPER_FEATURE_debug_output@ -#define FRAMELESSHELPER_FEATURE_bundle_resource @FRAMELESSHELPER_FEATURE_bundle_resource@ -#define FRAMELESSHELPER_FEATURE_private_qt @FRAMELESSHELPER_FEATURE_private_qt@ -#define FRAMELESSHELPER_FEATURE_window @FRAMELESSHELPER_FEATURE_window@ -#define FRAMELESSHELPER_FEATURE_titlebar @FRAMELESSHELPER_FEATURE_titlebar@ -#define FRAMELESSHELPER_FEATURE_translation @FRAMELESSHELPER_FEATURE_translation@ -#define FRAMELESSHELPER_FEATURE_mica_material @FRAMELESSHELPER_FEATURE_mica_material@ -#define FRAMELESSHELPER_FEATURE_border_painter @FRAMELESSHELPER_FEATURE_border_painter@ -#define FRAMELESSHELPER_FEATURE_system_button @FRAMELESSHELPER_FEATURE_system_button@ - -#endif // _FRAMELESSHELPER_CONFIG_DEFINED_ diff --git a/src/core/framelesshelper.version.in b/src/core/framelesshelper.version.in deleted file mode 100644 index a92d1715..00000000 --- a/src/core/framelesshelper.version.in +++ /dev/null @@ -1,51 +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. - */ - -// Generated automatically by CMake. -// WARNING! DO NOT EDIT THIS FILE MANUALLY! -// ALL CHANGES WILL BE LOST AFTER RE-CONFIGURING! -// Also please do not include this file directly, -// it's designed to be included by FramelessHelper's own headers. - -#pragma once - -#ifndef _FRAMELESSHELPER_VERSION_DEFINED_ -#define _FRAMELESSHELPER_VERSION_DEFINED_ - -[[maybe_unused]] inline constexpr const int FRAMELESSHELPER_VERSION_MAJOR = @PROJECT_VERSION_MAJOR@; -[[maybe_unused]] inline constexpr const int FRAMELESSHELPER_VERSION_MINOR = @PROJECT_VERSION_MINOR@; -[[maybe_unused]] inline constexpr const int FRAMELESSHELPER_VERSION_PATCH = @PROJECT_VERSION_PATCH@; -//[[maybe_unused]] inline constexpr const int FRAMELESSHELPER_VERSION_TWEAK = @PROJECT_VERSION_TWEAK@; -[[maybe_unused]] inline constexpr const char FRAMELESSHELPER_VERSION_STR[] = "@PROJECT_VERSION@"; -[[maybe_unused]] inline constexpr const char FRAMELESSHELPER_COMMIT_STR[] = "@PROJECT_VERSION_COMMIT@"; -[[maybe_unused]] inline constexpr const char FRAMELESSHELPER_COMPILE_DATETIME_STR[] = "@PROJECT_COMPILE_DATETIME@"; - -#define __FRAMELESSHELPER_VERSION_MAJOR__ @PROJECT_VERSION_MAJOR@ -#define __FRAMELESSHELPER_VERSION_MINOR__ @PROJECT_VERSION_MINOR@ -#define __FRAMELESSHELPER_VERSION_PATCH__ @PROJECT_VERSION_PATCH@ -//#define __FRAMELESSHELPER_VERSION_TWEAK__ @PROJECT_VERSION_TWEAK@ -#define __FRAMELESSHELPER_VERSION__ @PROJECT_VERSION_HEX@ -#define __FRAMELESSHELPER__ @PROJECT_VERSION_HEX@ - -#endif // _FRAMELESSHELPER_VERSION_DEFINED_