cmake: update

This commit is contained in:
Zhao Yuhang 2023-09-10 14:28:07 +08:00
parent 4df552d526
commit 66206aa420
9 changed files with 153 additions and 220 deletions

4
.gitignore vendored
View File

@ -45,7 +45,7 @@ target_wrapper.*
# QtCreator CMake
CMakeLists.txt.user*
# QtCreator 4.8< compilation database
# QtCreator 4.8< compilation database
compile_commands.json
# QtCreator local machine specific files for imported projects
@ -54,6 +54,8 @@ compile_commands.json
# My
[Bb]in/
[Bb]in64/
[Ll]ib/
[Ll]ib64/
[Bb]uild*/
*.7z
*.zip

View File

@ -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}")

20
build/msvc2022.bat Normal file
View File

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

@ -1 +1 @@
Subproject commit a0d72f177e9a919c1f273b67d0456a052020781a
Subproject commit 41198b322221e1c79b025a74f511cf84e7bb3b1a

View File

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

View File

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

View File

@ -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;
}

View File

@ -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);
}

View File

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