cmake: update
This commit is contained in:
parent
4df552d526
commit
66206aa420
|
@ -54,6 +54,8 @@ compile_commands.json
|
|||
# My
|
||||
[Bb]in/
|
||||
[Bb]in64/
|
||||
[Ll]ib/
|
||||
[Ll]ib64/
|
||||
[Bb]uild*/
|
||||
*.7z
|
||||
*.zip
|
||||
|
|
206
CMakeLists.txt
206
CMakeLists.txt
|
@ -67,9 +67,6 @@ if(FRAMELESSHELPER_NO_WINDOW AND FRAMELESSHELPER_BUILD_EXAMPLES)
|
|||
set(FRAMELESSHELPER_BUILD_EXAMPLES OFF)
|
||||
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 "")
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
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.")
|
||||
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 "")
|
||||
if(NOT FRAMELESSHELPER_BUILD_STATIC)
|
||||
list(APPEND __extra_flags ENABLE_LTO)
|
||||
|
@ -106,6 +135,10 @@ endif()
|
|||
setup_project(
|
||||
QT_PROJECT
|
||||
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
|
||||
MAX_WARNING
|
||||
RTTI
|
||||
|
@ -114,13 +147,6 @@ setup_project(
|
|||
)
|
||||
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")
|
||||
set(FRAMELESSHELPER_ENABLE_SPECTRE 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)
|
||||
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}
|
||||
generate_project_version(
|
||||
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")
|
||||
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 ###
|
||||
add_project_config(KEY "static_build" CONDITION FRAMELESSHELPER_BUILD_STATIC)
|
||||
add_project_config(KEY "widgets" CONDITION FRAMELESSHELPER_BUILD_WIDGETS)
|
||||
add_project_config(KEY "quick" CONDITION FRAMELESSHELPER_BUILD_QUICK)
|
||||
add_project_config(KEY "debug_output" CONDITION NOT FRAMELESSHELPER_NO_DEBUG_OUTPUT)
|
||||
add_project_config(KEY "bundle_resource" CONDITION NOT FRAMELESSHELPER_NO_BUNDLE_RESOURCE)
|
||||
add_project_config(KEY "private_qt" CONDITION NOT FRAMELESSHELPER_NO_PRIVATE)
|
||||
add_project_config(KEY "window" CONDITION NOT FRAMELESSHELPER_NO_WINDOW)
|
||||
add_project_config(KEY "titlebar" CONDITION NOT FRAMELESSHELPER_NO_TITLEBAR)
|
||||
add_project_config(KEY "translation" CONDITION NOT FRAMELESSHELPER_NO_TRANSLATION)
|
||||
add_project_config(KEY "mica_material" CONDITION NOT FRAMELESSHELPER_NO_MICA_MATERIAL)
|
||||
add_project_config(KEY "border_painter" CONDITION NOT FRAMELESSHELPER_NO_BORDER_PAINTER)
|
||||
add_project_config(KEY "system_button" CONDITION NOT FRAMELESSHELPER_NO_SYSTEM_BUTTON)
|
||||
generate_project_config(PATH "${FRAMELESSHELPER_CONFIG_FILE}")
|
||||
|
||||
if(TARGET Qt${QT_VERSION_MAJOR}::Core AND TARGET Qt${QT_VERSION_MAJOR}::Gui)
|
||||
add_subdirectory(src)
|
||||
|
@ -372,8 +280,6 @@ if(NOT FRAMELESSHELPER_NO_SUMMARY)
|
|||
endif()
|
||||
message("------------------------ FramelessHelper ------------------------")
|
||||
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 FramelessHelper::Widgets module: ${FRAMELESSHELPER_BUILD_WIDGETS}")
|
||||
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"
|
||||
|
||||
[[maybe_unused]] inline constexpr const int FRAMELESSHELPER_VERSION =
|
||||
FRAMELESSHELPER_MAKE_VERSION(
|
||||
FRAMELESSHELPER_VERSION_MAJOR,
|
||||
FRAMELESSHELPER_VERSION_MINOR,
|
||||
FRAMELESSHELPER_VERSION_PATCH);
|
||||
|
||||
namespace Global
|
||||
{
|
||||
|
||||
|
@ -489,13 +483,30 @@ Q_ENUM_NS(WindowCornerStyle)
|
|||
|
||||
struct VersionInfo
|
||||
{
|
||||
int version = 0;
|
||||
const char *version_str = nullptr;
|
||||
const char *commit = nullptr;
|
||||
const char *compileDateTime = nullptr;
|
||||
const char *compiler = nullptr;
|
||||
bool isDebug = false;
|
||||
bool isStatic = false;
|
||||
struct {
|
||||
unsigned long num = 0;
|
||||
const char *str = nullptr;
|
||||
} version = {};
|
||||
struct {
|
||||
const char *hash = nullptr;
|
||||
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
|
||||
|
|
|
@ -31,10 +31,10 @@ FRAMELESSHELPER_BEGIN_NAMESPACE
|
|||
|
||||
struct VersionNumber
|
||||
{
|
||||
int Major = 0;
|
||||
int Minor = 0;
|
||||
int Patch = 0;
|
||||
int Tweak = 0;
|
||||
unsigned long Major = 0;
|
||||
unsigned long Minor = 0;
|
||||
unsigned long Patch = 0;
|
||||
unsigned long Tweak = 0;
|
||||
|
||||
[[nodiscard]] friend constexpr bool operator==(const VersionNumber &lhs, const VersionNumber &rhs) noexcept
|
||||
{
|
||||
|
|
|
@ -30,30 +30,6 @@
|
|||
#include <QtCore/qcoreapplication.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
|
||||
QT_BEGIN_NAMESPACE
|
||||
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)
|
||||
{
|
||||
const QDebugStateSaver saver(d);
|
||||
int major = 0, minor = 0, patch = 0;
|
||||
FRAMELESSHELPER_EXTRACT_VERSION(ver.version, major, minor, patch)
|
||||
const auto ver_num = FRAMELESSHELPER_PREPEND_NAMESPACE(VersionNumber){major, minor, patch};
|
||||
unsigned long major = 0, minor = 0, patch = 0;
|
||||
FRAMELESSHELPER_EXTRACT_VERSION(ver.version.num, major, minor, patch)
|
||||
const auto ver_num = FRAMELESSHELPER_PREPEND_NAMESPACE(VersionNumber){ major, minor, patch };
|
||||
d.nospace().noquote() << "VersionInfo("
|
||||
<< "version number: " << ver_num << ", "
|
||||
<< "version string: " << ver.version_str << ", "
|
||||
<< "commit hash: " << ver.commit << ", "
|
||||
<< "compiler: " << ver.compiler << ", "
|
||||
<< "debug build: " << ver.isDebug << ", "
|
||||
<< "static build: " << ver.isStatic << ')';
|
||||
<< "version string: " << ver.version.str << ", "
|
||||
<< "commit hash: " << ver.commit.hash << ", "
|
||||
<< "commit subject: " << ver.commit.subject << ", "
|
||||
<< "commit author: " << ver.commit.author << ", "
|
||||
<< "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;
|
||||
}
|
||||
|
||||
|
@ -195,30 +181,36 @@ void FramelessHelperCoreUninitialize()
|
|||
VersionInfo FramelessHelperVersion()
|
||||
{
|
||||
static const auto result = []() -> VersionInfo {
|
||||
const auto _compiler = []() -> const char * { return COMPILER_STRING; }();
|
||||
const auto _debug = []() -> bool {
|
||||
VersionInfo vi = {};
|
||||
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
|
||||
return true;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}();
|
||||
const auto _static = []() -> bool {
|
||||
vi.build.is_static = []() -> bool {
|
||||
#if FRAMELESSHELPER_CONFIG(static_build)
|
||||
return true;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}();
|
||||
return VersionInfo{
|
||||
/* .version */ FRAMELESSHELPER_VERSION,
|
||||
/* .version_str */ FRAMELESSHELPER_VERSION_STR,
|
||||
/* .commit */ FRAMELESSHELPER_COMMIT_STR,
|
||||
/* .compileDateTime */ FRAMELESSHELPER_COMPILE_DATETIME_STR,
|
||||
/* .compiler */ _compiler,
|
||||
/* .isDebug */ _debug,
|
||||
/* .isStatic */ _static
|
||||
};
|
||||
return vi;
|
||||
}();
|
||||
return result;
|
||||
}
|
||||
|
@ -258,11 +250,13 @@ void FramelessHelperPrintLogo()
|
|||
const VersionInfo ver = FramelessHelperVersion();
|
||||
QString message = {};
|
||||
QTextStream stream(&message, QIODevice::WriteOnly);
|
||||
stream << "FramelessHelper (" << (ver.isStatic ? "static" : "shared")
|
||||
<< ", " << (ver.isDebug ? "debug" : "release") << ") version "
|
||||
<< ver.version_str << ", author wangwenx190 (Yuhang Zhao)."
|
||||
<< " Built by " << ver.compiler << " from " << ver.commit
|
||||
<< " on " << ver.compileDateTime << " (UTC).";
|
||||
stream << "FramelessHelper (" << (ver.build.is_static ? "static" : "shared")
|
||||
<< ", " << (ver.build.is_debug ? "debug" : "release")
|
||||
<< ver.build.architecture << ") version " << ver.version.str
|
||||
<< ", author wangwenx190 (Yuhang Zhao, 2546789017@qq.com)."
|
||||
<< " Built by " << ver.compiler.name << ver.compiler.version
|
||||
<< " from " << ver.commit.hash << " on "
|
||||
<< ver.build.configure_datetime << " (UTC).";
|
||||
INFO.nospace().noquote() << message;
|
||||
}
|
||||
|
||||
|
|
|
@ -280,7 +280,7 @@ void FramelessManagerPrivate::initialize()
|
|||
// Set a global flag so that people can check whether FramelessHelper is being
|
||||
// used without actually accessing the FramelessHelper interface.
|
||||
static constexpr const char flag[] = "__FRAMELESSHELPER__";
|
||||
const int ver = FramelessHelperVersion().version;
|
||||
const auto ver = quint64(FramelessHelperVersion().version.num);
|
||||
qputenv(flag, QByteArray::number(ver));
|
||||
qApp->setProperty(flag, ver);
|
||||
}
|
||||
|
|
|
@ -740,7 +740,7 @@ static constexpr const std::array<Win32Message, 333> g_win32MessageMap =
|
|||
SecureZeroMemory(&osvi, sizeof(osvi));
|
||||
osvi.dwOSVersionInfoSize = sizeof(osvi);
|
||||
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;
|
||||
|
|
Loading…
Reference in New Issue