cmake: move config system to cmake

This commit is contained in:
Yuhang Zhao 2023-09-04 18:08:18 +08:00
parent 97112f853f
commit 4df552d526
4 changed files with 145 additions and 156 deletions

View File

@ -165,6 +165,148 @@ if(FRAMELESSHELPER_BUILD_QUICK AND NOT TARGET Qt${QT_VERSION_MAJOR}::Quick)
set(FRAMELESSHELPER_BUILD_QUICK OFF) set(FRAMELESSHELPER_BUILD_QUICK OFF)
endif() 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) if(TARGET Qt${QT_VERSION_MAJOR}::Core AND TARGET Qt${QT_VERSION_MAJOR}::Gui)
add_subdirectory(src) add_subdirectory(src)
else() else()

View File

@ -50,55 +50,6 @@ if(UNIX AND NOT APPLE)
endif() endif()
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 Core)
set(SUB_MODULE_FULL_NAME ${PROJECT_NAME}${SUB_MODULE}) set(SUB_MODULE_FULL_NAME ${PROJECT_NAME}${SUB_MODULE})
set(SUB_MODULE_TARGET ${SUB_MODULE_FULL_NAME}) 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}) 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 set(PUBLIC_HEADERS
${CMAKE_CURRENT_BINARY_DIR}/framelesshelper.version ${FRAMELESSHELPER_VERSION_FILE}
${CMAKE_CURRENT_BINARY_DIR}/framelesshelper.config ${FRAMELESSHELPER_CONFIG_FILE}
${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
@ -323,6 +269,7 @@ target_include_directories(${SUB_MODULE_TARGET} 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:${CMAKE_CURRENT_BINARY_DIR}>" "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>"
"$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}>"
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>" "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/${SUB_MODULE_PATH}>" "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/${SUB_MODULE_PATH}>"
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/${SUB_MODULE_PATH}/private>" "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/${SUB_MODULE_PATH}/private>"

View File

@ -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_

View File

@ -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_