cmake: update
This commit is contained in:
parent
4df552d526
commit
66206aa420
|
@ -45,7 +45,7 @@ target_wrapper.*
|
||||||
# QtCreator CMake
|
# QtCreator CMake
|
||||||
CMakeLists.txt.user*
|
CMakeLists.txt.user*
|
||||||
|
|
||||||
# QtCreator 4.8< compilation database
|
# QtCreator 4.8< compilation database
|
||||||
compile_commands.json
|
compile_commands.json
|
||||||
|
|
||||||
# QtCreator local machine specific files for imported projects
|
# QtCreator local machine specific files for imported projects
|
||||||
|
@ -54,6 +54,8 @@ compile_commands.json
|
||||||
# My
|
# My
|
||||||
[Bb]in/
|
[Bb]in/
|
||||||
[Bb]in64/
|
[Bb]in64/
|
||||||
|
[Ll]ib/
|
||||||
|
[Ll]ib64/
|
||||||
[Bb]uild*/
|
[Bb]uild*/
|
||||||
*.7z
|
*.7z
|
||||||
*.zip
|
*.zip
|
||||||
|
|
206
CMakeLists.txt
206
CMakeLists.txt
|
@ -67,9 +67,6 @@ if(FRAMELESSHELPER_NO_WINDOW AND FRAMELESSHELPER_BUILD_EXAMPLES)
|
||||||
set(FRAMELESSHELPER_BUILD_EXAMPLES OFF)
|
set(FRAMELESSHELPER_BUILD_EXAMPLES OFF)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(PROJECT_VERSION_HEX "0x00000000")
|
|
||||||
math(EXPR PROJECT_VERSION_HEX "((${PROJECT_VERSION_MAJOR} & 0xff) << 24) | ((${PROJECT_VERSION_MINOR} & 0xff) << 16) | ((${PROJECT_VERSION_PATCH} & 0xff) << 8)" OUTPUT_FORMAT HEXADECIMAL)
|
|
||||||
|
|
||||||
set(FRAMELESSHELPER_64BIT_POSTFIX "")
|
set(FRAMELESSHELPER_64BIT_POSTFIX "")
|
||||||
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||||
set(FRAMELESSHELPER_64BIT_POSTFIX "64")
|
set(FRAMELESSHELPER_64BIT_POSTFIX "64")
|
||||||
|
@ -99,6 +96,38 @@ if(FRAMELESSHELPER_ENABLE_VCLTL AND NOT MSVC)
|
||||||
message(WARNING "VC-LTL is only available for the MSVC toolchain.")
|
message(WARNING "VC-LTL is only available for the MSVC toolchain.")
|
||||||
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_MODIFY_LOST_WARNING "// Caution: This file is generated by CMake automatically during configure.
|
||||||
|
// WARNING!!! DO NOT EDIT THIS FILE MANUALLY!!!
|
||||||
|
// ALL YOUR MODIFICATIONS HERE WILL GET LOST AFTER RE-CONFIGURING!!!
|
||||||
|
// Also please do not include this file directly,
|
||||||
|
// it's designed to be included by FramelessHelper's own headers.")
|
||||||
|
|
||||||
|
string(TOUPPER "${PROJECT_NAME}" PROJECT_NAME_UPPER)
|
||||||
|
|
||||||
set(__extra_flags "")
|
set(__extra_flags "")
|
||||||
if(NOT FRAMELESSHELPER_BUILD_STATIC)
|
if(NOT FRAMELESSHELPER_BUILD_STATIC)
|
||||||
list(APPEND __extra_flags ENABLE_LTO)
|
list(APPEND __extra_flags ENABLE_LTO)
|
||||||
|
@ -106,6 +135,10 @@ endif()
|
||||||
setup_project(
|
setup_project(
|
||||||
QT_PROJECT
|
QT_PROJECT
|
||||||
QML_IMPORT_DIR "${PROJECT_BINARY_DIR}/imports"
|
QML_IMPORT_DIR "${PROJECT_BINARY_DIR}/imports"
|
||||||
|
LICENSE_HEADER "${FRAMELESSHELPER_LICENSE_HEADER}"
|
||||||
|
MODIFY_LOST_WARNING "${FRAMELESSHELPER_MODIFY_LOST_WARNING}"
|
||||||
|
CONFIG_PREFIX "${PROJECT_NAME_UPPER}_FEATURE"
|
||||||
|
VERSION_PREFIX "${PROJECT_NAME_UPPER}"
|
||||||
LANGUAGES CXX RC
|
LANGUAGES CXX RC
|
||||||
MAX_WARNING
|
MAX_WARNING
|
||||||
RTTI
|
RTTI
|
||||||
|
@ -114,13 +147,6 @@ setup_project(
|
||||||
)
|
)
|
||||||
unset(__extra_flags)
|
unset(__extra_flags)
|
||||||
|
|
||||||
set(PROJECT_VERSION_COMMIT "UNKNOWN")
|
|
||||||
set(PROJECT_COMPILE_DATETIME "UNKNOWN")
|
|
||||||
if(NOT FRAMELESSHELPER_REPRODUCIBLE_OUTPUT)
|
|
||||||
get_commit_hash(RESULT PROJECT_VERSION_COMMIT)
|
|
||||||
string(TIMESTAMP PROJECT_COMPILE_DATETIME UTC)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(MINGW AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
if(MINGW AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||||
set(FRAMELESSHELPER_ENABLE_SPECTRE OFF)
|
set(FRAMELESSHELPER_ENABLE_SPECTRE OFF)
|
||||||
set(FRAMELESSHELPER_ENABLE_EHCONTGUARD OFF)
|
set(FRAMELESSHELPER_ENABLE_EHCONTGUARD OFF)
|
||||||
|
@ -165,147 +191,29 @@ 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")
|
set(FRAMELESSHELPER_VERSION_FILE "${PROJECT_BINARY_DIR}/framelesshelper.version")
|
||||||
if(NOT EXISTS "${FRAMELESSHELPER_VERSION_FILE}")
|
generate_project_version(
|
||||||
set(__version_content "${FRAMELESSHELPER_LICENSE_HEADER}
|
PATH "${FRAMELESSHELPER_VERSION_FILE}"
|
||||||
|
COMMIT_HASH COMMIT_SUBJECT COMMIT_AUTHOR
|
||||||
|
COMMIT_DATETIME COMMIT_BRANCH COMPILER_NAME
|
||||||
|
COMPILER_VENDOR COMPILER_VERSION BUILD_DATETIME
|
||||||
|
ARCHITECTURE CMAKE_VERSION GENERATOR
|
||||||
|
)
|
||||||
|
|
||||||
${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")
|
set(FRAMELESSHELPER_CONFIG_FILE "${PROJECT_BINARY_DIR}/framelesshelper.config")
|
||||||
if(NOT EXISTS "${FRAMELESSHELPER_CONFIG_FILE}")
|
add_project_config(KEY "static_build" CONDITION FRAMELESSHELPER_BUILD_STATIC)
|
||||||
set(FRAMELESSHELPER_FEATURE_static_build "-1")
|
add_project_config(KEY "widgets" CONDITION FRAMELESSHELPER_BUILD_WIDGETS)
|
||||||
if(FRAMELESSHELPER_BUILD_STATIC)
|
add_project_config(KEY "quick" CONDITION FRAMELESSHELPER_BUILD_QUICK)
|
||||||
set(FRAMELESSHELPER_FEATURE_static_build "1")
|
add_project_config(KEY "debug_output" CONDITION NOT FRAMELESSHELPER_NO_DEBUG_OUTPUT)
|
||||||
endif()
|
add_project_config(KEY "bundle_resource" CONDITION NOT FRAMELESSHELPER_NO_BUNDLE_RESOURCE)
|
||||||
set(FRAMELESSHELPER_FEATURE_widgets "-1")
|
add_project_config(KEY "private_qt" CONDITION NOT FRAMELESSHELPER_NO_PRIVATE)
|
||||||
if(FRAMELESSHELPER_BUILD_WIDGETS)
|
add_project_config(KEY "window" CONDITION NOT FRAMELESSHELPER_NO_WINDOW)
|
||||||
set(FRAMELESSHELPER_FEATURE_widgets "1")
|
add_project_config(KEY "titlebar" CONDITION NOT FRAMELESSHELPER_NO_TITLEBAR)
|
||||||
endif()
|
add_project_config(KEY "translation" CONDITION NOT FRAMELESSHELPER_NO_TRANSLATION)
|
||||||
set(FRAMELESSHELPER_FEATURE_quick "-1")
|
add_project_config(KEY "mica_material" CONDITION NOT FRAMELESSHELPER_NO_MICA_MATERIAL)
|
||||||
if(FRAMELESSHELPER_BUILD_QUICK)
|
add_project_config(KEY "border_painter" CONDITION NOT FRAMELESSHELPER_NO_BORDER_PAINTER)
|
||||||
set(FRAMELESSHELPER_FEATURE_quick "1")
|
add_project_config(KEY "system_button" CONDITION NOT FRAMELESSHELPER_NO_SYSTEM_BUTTON)
|
||||||
endif()
|
generate_project_config(PATH "${FRAMELESSHELPER_CONFIG_FILE}")
|
||||||
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)
|
||||||
|
@ -372,8 +280,6 @@ if(NOT FRAMELESSHELPER_NO_SUMMARY)
|
||||||
endif()
|
endif()
|
||||||
message("------------------------ FramelessHelper ------------------------")
|
message("------------------------ FramelessHelper ------------------------")
|
||||||
message("FramelessHelper version: ${PROJECT_VERSION}")
|
message("FramelessHelper version: ${PROJECT_VERSION}")
|
||||||
message("FramelessHelper commit hash: ${PROJECT_VERSION_COMMIT}")
|
|
||||||
message("FramelessHelper configure date and time: ${PROJECT_COMPILE_DATETIME} (UTC)")
|
|
||||||
message("Build the static version of FramelessHelper: ${FRAMELESSHELPER_BUILD_STATIC}")
|
message("Build the static version of FramelessHelper: ${FRAMELESSHELPER_BUILD_STATIC}")
|
||||||
message("Build the FramelessHelper::Widgets module: ${FRAMELESSHELPER_BUILD_WIDGETS}")
|
message("Build the FramelessHelper::Widgets module: ${FRAMELESSHELPER_BUILD_WIDGETS}")
|
||||||
message("Build the FramelessHelper::Quick module: ${FRAMELESSHELPER_BUILD_QUICK}")
|
message("Build the FramelessHelper::Quick module: ${FRAMELESSHELPER_BUILD_QUICK}")
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
@echo off
|
||||||
|
title Building FramelessHelper ...
|
||||||
|
setlocal
|
||||||
|
cls
|
||||||
|
call "%ProgramFiles%\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat"
|
||||||
|
cd /d "%~dp0"
|
||||||
|
if exist cmake rd /s /q cmake
|
||||||
|
md cmake
|
||||||
|
cd cmake
|
||||||
|
md build
|
||||||
|
cd build
|
||||||
|
cmake -DCMAKE_PREFIX_PATH="C:\Qt\6.6.0\msvc2019_64" -DCMAKE_INSTALL_PREFIX="%~dp0cmake\install" -DCMAKE_CONFIGURATION_TYPES=Release;Debug -G"Ninja Multi-Config" -DFRAMELESSHELPER_ENABLE_VCLTL=ON -DFRAMELESSHELPER_ENABLE_YYTHUNKS=ON -DFRAMELESSHELPER_ENABLE_SPECTRE=ON -DFRAMELESSHELPER_ENABLE_EHCONTGUARD=ON -DFRAMELESSHELPER_ENABLE_INTELCET=ON -DFRAMELESSHELPER_ENABLE_INTELJCC=ON -DFRAMELESSHELPER_ENABLE_CFGUARD=ON -DFRAMELESSHELPER_FORCE_LTO=ON "%~dp0.."
|
||||||
|
cmake --build . --target all --config Release --parallel
|
||||||
|
cmake --build . --target all --config Debug --parallel
|
||||||
|
cmake --install . --config Release --strip
|
||||||
|
cmake --install . --config Debug
|
||||||
|
endlocal
|
||||||
|
cd /d "%~dp0"
|
||||||
|
pause
|
||||||
|
exit /b 0
|
2
cmake
2
cmake
|
@ -1 +1 @@
|
||||||
Subproject commit a0d72f177e9a919c1f273b67d0456a052020781a
|
Subproject commit 41198b322221e1c79b025a74f511cf84e7bb3b1a
|
|
@ -265,12 +265,6 @@ FRAMELESSHELPER_BEGIN_NAMESPACE
|
||||||
|
|
||||||
#include "framelesshelper.version"
|
#include "framelesshelper.version"
|
||||||
|
|
||||||
[[maybe_unused]] inline constexpr const int FRAMELESSHELPER_VERSION =
|
|
||||||
FRAMELESSHELPER_MAKE_VERSION(
|
|
||||||
FRAMELESSHELPER_VERSION_MAJOR,
|
|
||||||
FRAMELESSHELPER_VERSION_MINOR,
|
|
||||||
FRAMELESSHELPER_VERSION_PATCH);
|
|
||||||
|
|
||||||
namespace Global
|
namespace Global
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -489,13 +483,30 @@ Q_ENUM_NS(WindowCornerStyle)
|
||||||
|
|
||||||
struct VersionInfo
|
struct VersionInfo
|
||||||
{
|
{
|
||||||
int version = 0;
|
struct {
|
||||||
const char *version_str = nullptr;
|
unsigned long num = 0;
|
||||||
const char *commit = nullptr;
|
const char *str = nullptr;
|
||||||
const char *compileDateTime = nullptr;
|
} version = {};
|
||||||
const char *compiler = nullptr;
|
struct {
|
||||||
bool isDebug = false;
|
const char *hash = nullptr;
|
||||||
bool isStatic = false;
|
const char *subject = nullptr;
|
||||||
|
const char *author = nullptr;
|
||||||
|
const char *datetime = nullptr;
|
||||||
|
const char *branch = nullptr;
|
||||||
|
} commit = {};
|
||||||
|
struct {
|
||||||
|
const char *name = nullptr;
|
||||||
|
const char *version = nullptr;
|
||||||
|
const char *vendor = nullptr;
|
||||||
|
} compiler = {};
|
||||||
|
struct {
|
||||||
|
const char *cmake_version = nullptr;
|
||||||
|
const char *configure_datetime = nullptr;
|
||||||
|
const char *generator = nullptr;
|
||||||
|
const char *architecture = nullptr;
|
||||||
|
bool is_debug = false;
|
||||||
|
bool is_static = false;
|
||||||
|
} build = {};
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Dpi
|
struct Dpi
|
||||||
|
|
|
@ -31,10 +31,10 @@ FRAMELESSHELPER_BEGIN_NAMESPACE
|
||||||
|
|
||||||
struct VersionNumber
|
struct VersionNumber
|
||||||
{
|
{
|
||||||
int Major = 0;
|
unsigned long Major = 0;
|
||||||
int Minor = 0;
|
unsigned long Minor = 0;
|
||||||
int Patch = 0;
|
unsigned long Patch = 0;
|
||||||
int Tweak = 0;
|
unsigned long Tweak = 0;
|
||||||
|
|
||||||
[[nodiscard]] friend constexpr bool operator==(const VersionNumber &lhs, const VersionNumber &rhs) noexcept
|
[[nodiscard]] friend constexpr bool operator==(const VersionNumber &lhs, const VersionNumber &rhs) noexcept
|
||||||
{
|
{
|
||||||
|
|
|
@ -30,30 +30,6 @@
|
||||||
#include <QtCore/qcoreapplication.h>
|
#include <QtCore/qcoreapplication.h>
|
||||||
#include <QtCore/qloggingcategory.h>
|
#include <QtCore/qloggingcategory.h>
|
||||||
|
|
||||||
#ifndef COMPILER_STRING
|
|
||||||
# ifdef Q_CC_CLANG // Must be before GNU, because Clang claims to be GNU too.
|
|
||||||
# define COMPILER_STRING __VERSION__ // Already includes the compiler's name.
|
|
||||||
# elif defined(Q_CC_GHS)
|
|
||||||
# define COMPILER_STRING "GHS " QT_STRINGIFY(__GHS_VERSION_NUMBER)
|
|
||||||
# elif defined(Q_CC_GNU)
|
|
||||||
# define COMPILER_STRING "GCC " __VERSION__
|
|
||||||
# elif defined(Q_CC_MSVC)
|
|
||||||
# if (_MSC_VER < 1910)
|
|
||||||
# define COMPILER_STRING "MSVC 2015"
|
|
||||||
# elif (_MSC_VER < 1917)
|
|
||||||
# define COMPILER_STRING "MSVC 2017"
|
|
||||||
# elif (_MSC_VER < 1930)
|
|
||||||
# define COMPILER_STRING "MSVC 2019"
|
|
||||||
# elif (_MSC_VER < 2000)
|
|
||||||
# define COMPILER_STRING "MSVC 2022"
|
|
||||||
# else
|
|
||||||
# define COMPILER_STRING "MSVC version " QT_STRINGIFY(_MSC_VER)
|
|
||||||
# endif
|
|
||||||
# else
|
|
||||||
# define COMPILER_STRING "UNKNOWN"
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef QT_NO_DEBUG_STREAM
|
#ifndef QT_NO_DEBUG_STREAM
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
QDebug operator<<(QDebug d, const FRAMELESSHELPER_PREPEND_NAMESPACE(VersionNumber) &ver)
|
QDebug operator<<(QDebug d, const FRAMELESSHELPER_PREPEND_NAMESPACE(VersionNumber) &ver)
|
||||||
|
@ -70,16 +46,26 @@ QDebug operator<<(QDebug d, const FRAMELESSHELPER_PREPEND_NAMESPACE(VersionNumbe
|
||||||
QDebug operator<<(QDebug d, const FRAMELESSHELPER_PREPEND_NAMESPACE(Global)::VersionInfo &ver)
|
QDebug operator<<(QDebug d, const FRAMELESSHELPER_PREPEND_NAMESPACE(Global)::VersionInfo &ver)
|
||||||
{
|
{
|
||||||
const QDebugStateSaver saver(d);
|
const QDebugStateSaver saver(d);
|
||||||
int major = 0, minor = 0, patch = 0;
|
unsigned long major = 0, minor = 0, patch = 0;
|
||||||
FRAMELESSHELPER_EXTRACT_VERSION(ver.version, major, minor, patch)
|
FRAMELESSHELPER_EXTRACT_VERSION(ver.version.num, major, minor, patch)
|
||||||
const auto ver_num = FRAMELESSHELPER_PREPEND_NAMESPACE(VersionNumber){major, minor, patch};
|
const auto ver_num = FRAMELESSHELPER_PREPEND_NAMESPACE(VersionNumber){ major, minor, patch };
|
||||||
d.nospace().noquote() << "VersionInfo("
|
d.nospace().noquote() << "VersionInfo("
|
||||||
<< "version number: " << ver_num << ", "
|
<< "version number: " << ver_num << ", "
|
||||||
<< "version string: " << ver.version_str << ", "
|
<< "version string: " << ver.version.str << ", "
|
||||||
<< "commit hash: " << ver.commit << ", "
|
<< "commit hash: " << ver.commit.hash << ", "
|
||||||
<< "compiler: " << ver.compiler << ", "
|
<< "commit subject: " << ver.commit.subject << ", "
|
||||||
<< "debug build: " << ver.isDebug << ", "
|
<< "commit author: " << ver.commit.author << ", "
|
||||||
<< "static build: " << ver.isStatic << ')';
|
<< "commit date time: " << ver.commit.datetime << ", "
|
||||||
|
<< "commit branch: " << ver.commit.branch << ", "
|
||||||
|
<< "compiler name: " << ver.compiler.name << ", "
|
||||||
|
<< "compiler version: " << ver.compiler.version << ", "
|
||||||
|
<< "compiler vendor: " << ver.compiler.vendor << ", "
|
||||||
|
<< "cmake version: " << ver.build.cmake_version << ", "
|
||||||
|
<< "cmake configure date time: " << ver.build.configure_datetime << ", "
|
||||||
|
<< "cmake generator: " << ver.build.generator << ", "
|
||||||
|
<< "architecture: " << ver.build.architecture << ", "
|
||||||
|
<< "debug build: " << ver.build.is_debug << ", "
|
||||||
|
<< "static build: " << ver.build.is_static << ')';
|
||||||
return d;
|
return d;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -195,30 +181,36 @@ void FramelessHelperCoreUninitialize()
|
||||||
VersionInfo FramelessHelperVersion()
|
VersionInfo FramelessHelperVersion()
|
||||||
{
|
{
|
||||||
static const auto result = []() -> VersionInfo {
|
static const auto result = []() -> VersionInfo {
|
||||||
const auto _compiler = []() -> const char * { return COMPILER_STRING; }();
|
VersionInfo vi = {};
|
||||||
const auto _debug = []() -> bool {
|
vi.version.num = FRAMELESSHELPER_VERSION;
|
||||||
|
vi.version.str = FRAMELESSHELPER_VERSION_STR;
|
||||||
|
vi.commit.hash = FRAMELESSHELPER_COMMIT_HASH_STR;
|
||||||
|
vi.commit.subject = FRAMELESSHELPER_COMMIT_SUBJECT_STR;
|
||||||
|
vi.commit.author = FRAMELESSHELPER_COMMIT_AUTHOR_STR;
|
||||||
|
vi.commit.datetime = FRAMELESSHELPER_COMMIT_DATETIME_STR;
|
||||||
|
vi.commit.branch = FRAMELESSHELPER_COMMIT_BRANCH_STR;
|
||||||
|
vi.compiler.name = FRAMELESSHELPER_COMPILER_NAME_STR;
|
||||||
|
vi.compiler.version = FRAMELESSHELPER_COMPILER_VERSION_STR;
|
||||||
|
vi.compiler.vendor = FRAMELESSHELPER_COMPILER_VENDOR_STR;
|
||||||
|
vi.build.cmake_version = FRAMELESSHELPER_CMAKE_VERSION_STR;
|
||||||
|
vi.build.configure_datetime = FRAMELESSHELPER_BUILD_DATETIME_STR;
|
||||||
|
vi.build.generator = FRAMELESSHELPER_CMAKE_GENERATOR_STR;
|
||||||
|
vi.build.architecture = FRAMELESSHELPER_ARCHITECTURE_STR;
|
||||||
|
vi.build.is_debug = []() -> bool {
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
return true;
|
return true;
|
||||||
#else
|
#else
|
||||||
return false;
|
return false;
|
||||||
#endif
|
#endif
|
||||||
}();
|
}();
|
||||||
const auto _static = []() -> bool {
|
vi.build.is_static = []() -> bool {
|
||||||
#if FRAMELESSHELPER_CONFIG(static_build)
|
#if FRAMELESSHELPER_CONFIG(static_build)
|
||||||
return true;
|
return true;
|
||||||
#else
|
#else
|
||||||
return false;
|
return false;
|
||||||
#endif
|
#endif
|
||||||
}();
|
}();
|
||||||
return VersionInfo{
|
return vi;
|
||||||
/* .version */ FRAMELESSHELPER_VERSION,
|
|
||||||
/* .version_str */ FRAMELESSHELPER_VERSION_STR,
|
|
||||||
/* .commit */ FRAMELESSHELPER_COMMIT_STR,
|
|
||||||
/* .compileDateTime */ FRAMELESSHELPER_COMPILE_DATETIME_STR,
|
|
||||||
/* .compiler */ _compiler,
|
|
||||||
/* .isDebug */ _debug,
|
|
||||||
/* .isStatic */ _static
|
|
||||||
};
|
|
||||||
}();
|
}();
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -258,11 +250,13 @@ void FramelessHelperPrintLogo()
|
||||||
const VersionInfo ver = FramelessHelperVersion();
|
const VersionInfo ver = FramelessHelperVersion();
|
||||||
QString message = {};
|
QString message = {};
|
||||||
QTextStream stream(&message, QIODevice::WriteOnly);
|
QTextStream stream(&message, QIODevice::WriteOnly);
|
||||||
stream << "FramelessHelper (" << (ver.isStatic ? "static" : "shared")
|
stream << "FramelessHelper (" << (ver.build.is_static ? "static" : "shared")
|
||||||
<< ", " << (ver.isDebug ? "debug" : "release") << ") version "
|
<< ", " << (ver.build.is_debug ? "debug" : "release")
|
||||||
<< ver.version_str << ", author wangwenx190 (Yuhang Zhao)."
|
<< ver.build.architecture << ") version " << ver.version.str
|
||||||
<< " Built by " << ver.compiler << " from " << ver.commit
|
<< ", author wangwenx190 (Yuhang Zhao, 2546789017@qq.com)."
|
||||||
<< " on " << ver.compileDateTime << " (UTC).";
|
<< " Built by " << ver.compiler.name << ver.compiler.version
|
||||||
|
<< " from " << ver.commit.hash << " on "
|
||||||
|
<< ver.build.configure_datetime << " (UTC).";
|
||||||
INFO.nospace().noquote() << message;
|
INFO.nospace().noquote() << message;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -280,7 +280,7 @@ void FramelessManagerPrivate::initialize()
|
||||||
// Set a global flag so that people can check whether FramelessHelper is being
|
// Set a global flag so that people can check whether FramelessHelper is being
|
||||||
// used without actually accessing the FramelessHelper interface.
|
// used without actually accessing the FramelessHelper interface.
|
||||||
static constexpr const char flag[] = "__FRAMELESSHELPER__";
|
static constexpr const char flag[] = "__FRAMELESSHELPER__";
|
||||||
const int ver = FramelessHelperVersion().version;
|
const auto ver = quint64(FramelessHelperVersion().version.num);
|
||||||
qputenv(flag, QByteArray::number(ver));
|
qputenv(flag, QByteArray::number(ver));
|
||||||
qApp->setProperty(flag, ver);
|
qApp->setProperty(flag, ver);
|
||||||
}
|
}
|
||||||
|
|
|
@ -740,7 +740,7 @@ static constexpr const std::array<Win32Message, 333> g_win32MessageMap =
|
||||||
SecureZeroMemory(&osvi, sizeof(osvi));
|
SecureZeroMemory(&osvi, sizeof(osvi));
|
||||||
osvi.dwOSVersionInfoSize = sizeof(osvi);
|
osvi.dwOSVersionInfoSize = sizeof(osvi);
|
||||||
if (pRtlGetVersion(reinterpret_cast<PRTL_OSVERSIONINFOW>(&osvi)) == _STATUS_SUCCESS) {
|
if (pRtlGetVersion(reinterpret_cast<PRTL_OSVERSIONINFOW>(&osvi)) == _STATUS_SUCCESS) {
|
||||||
return VersionNumber{int(osvi.dwMajorVersion), int(osvi.dwMinorVersion), int(osvi.dwBuildNumber)};
|
return VersionNumber{ osvi.dwMajorVersion, osvi.dwMinorVersion, osvi.dwBuildNumber };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return std::nullopt;
|
return std::nullopt;
|
||||||
|
|
Loading…
Reference in New Issue