mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2024-11-22 01:06:03 +03:00
Generate version header when configuring project
The basic idea is we create a version header template at "src/base/version.h.in" and the build systems are expected to replace strings that are enclosed with @ symbols and generate "src/base/version.h" for other source files to consume/include.
This commit is contained in:
parent
04a9ce6e81
commit
c669401767
19 changed files with 77 additions and 32 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -4,6 +4,7 @@ src/qbittorrent
|
|||
src/qbittorrent-nox
|
||||
src/release
|
||||
src/debug
|
||||
src/base/version.h
|
||||
CMakeLists.txt.user*
|
||||
qbittorrent.pro.user*
|
||||
conf.pri
|
||||
|
|
|
@ -51,12 +51,27 @@ elseif (MSVC)
|
|||
feature_option(MSVC_RUNTIME_DYNAMIC "Use MSVC dynamic runtime library (-MD) instead of static (-MT)" ON)
|
||||
endif()
|
||||
|
||||
set(QBT_VER_STATUS "alpha1" CACHE STRING "Project status version. Should be empty for release builds.")
|
||||
|
||||
include(GNUInstallDirs)
|
||||
add_subdirectory(src)
|
||||
add_subdirectory(dist)
|
||||
|
||||
# Generate version header
|
||||
set(QBT_VER_STATUS "alpha1" CACHE STRING "Project status version. Should be empty for release builds.")
|
||||
|
||||
set(QBT_PROJECT_VERSION "${qBittorrent_VERSION_MAJOR}.${qBittorrent_VERSION_MINOR}.${qBittorrent_VERSION_PATCH}")
|
||||
if (NOT ${qBittorrent_VERSION_TWEAK} EQUAL 0)
|
||||
set(QBT_PROJECT_VERSION "${QBT_PROJECT_VERSION}.${qBittorrent_VERSION_TWEAK}")
|
||||
endif()
|
||||
set(QBT_PROJECT_VERSION "${QBT_PROJECT_VERSION}${QBT_VER_STATUS}")
|
||||
|
||||
file(READ "src/base/version.h.in" versionHeader)
|
||||
string(REPLACE "@VER_MAJOR@" ${qBittorrent_VERSION_MAJOR} versionHeader "${versionHeader}")
|
||||
string(REPLACE "@VER_MINOR@" ${qBittorrent_VERSION_MINOR} versionHeader "${versionHeader}")
|
||||
string(REPLACE "@VER_BUGFIX@" ${qBittorrent_VERSION_PATCH} versionHeader "${versionHeader}")
|
||||
string(REPLACE "@VER_BUILD@" ${qBittorrent_VERSION_TWEAK} versionHeader "${versionHeader}")
|
||||
string(REPLACE "@PROJECT_VERSION@" ${QBT_PROJECT_VERSION} versionHeader "${versionHeader}")
|
||||
file(WRITE "src/base/version.h" "${versionHeader}")
|
||||
|
||||
if (VERBOSE_CONFIGURE)
|
||||
feature_summary(WHAT ALL)
|
||||
else()
|
||||
|
|
|
@ -7,17 +7,6 @@ macro(qbt_common_config)
|
|||
# treat value specified by the CXX_STANDARD target property as a requirement by default
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
# these definitions are only needed for calls to
|
||||
# lt::generate_fingerprint and for the qbittorrent.rc file on Windows
|
||||
add_library(qbt_version_definitions INTERFACE)
|
||||
|
||||
target_compile_definitions(qbt_version_definitions INTERFACE
|
||||
QBT_VERSION_MAJOR=${qBittorrent_VERSION_MAJOR}
|
||||
QBT_VERSION_MINOR=${qBittorrent_VERSION_MINOR}
|
||||
QBT_VERSION_BUGFIX=${qBittorrent_VERSION_PATCH}
|
||||
QBT_VERSION_BUILD=${qBittorrent_VERSION_TWEAK}
|
||||
)
|
||||
|
||||
add_library(qbt_common_cfg INTERFACE)
|
||||
|
||||
# Full C++ 17 support is required
|
||||
|
@ -27,16 +16,7 @@ macro(qbt_common_config)
|
|||
cxx_std_17
|
||||
)
|
||||
|
||||
set(QBT_PROJECT_VERSION "${qBittorrent_VERSION_MAJOR}.${qBittorrent_VERSION_MINOR}.${qBittorrent_VERSION_PATCH}")
|
||||
if (NOT ${qBittorrent_VERSION_TWEAK} EQUAL 0)
|
||||
set(QBT_PROJECT_VERSION "${QBT_PROJECT_VERSION}.${qBittorrent_VERSION_TWEAK}")
|
||||
endif()
|
||||
|
||||
set(QBT_FULL_VERSION "${QBT_PROJECT_VERSION}${QBT_VER_STATUS}")
|
||||
|
||||
target_compile_definitions(qbt_common_cfg INTERFACE
|
||||
QBT_VERSION="v${QBT_FULL_VERSION}"
|
||||
QBT_VERSION_2="${QBT_FULL_VERSION}"
|
||||
QT_DEPRECATED_WARNINGS
|
||||
QT_NO_CAST_TO_ASCII
|
||||
QT_NO_CAST_FROM_BYTEARRAY
|
||||
|
|
|
@ -61,7 +61,6 @@ target_sources(qbt_app PRIVATE
|
|||
|
||||
target_link_libraries(qbt_app PRIVATE
|
||||
qbt_base
|
||||
qbt_version_definitions
|
||||
)
|
||||
|
||||
set_target_properties(qbt_app PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}")
|
||||
|
|
|
@ -81,6 +81,7 @@
|
|||
#include "base/utils/fs.h"
|
||||
#include "base/utils/misc.h"
|
||||
#include "base/utils/string.h"
|
||||
#include "base/version.h"
|
||||
#include "applicationinstancemanager.h"
|
||||
#include "filelogger.h"
|
||||
|
||||
|
|
|
@ -78,6 +78,7 @@ Q_IMPORT_PLUGIN(QICOPlugin)
|
|||
|
||||
#include "base/preferences.h"
|
||||
#include "base/profile.h"
|
||||
#include "base/version.h"
|
||||
#include "application.h"
|
||||
#include "cmdoptions.h"
|
||||
#include "upgrade.h"
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
#include <QString>
|
||||
|
||||
#include "base/utils/misc.h"
|
||||
#include "base/version.h"
|
||||
#include "ui_stacktracedialog.h"
|
||||
|
||||
StacktraceDialog::StacktraceDialog(QWidget *parent)
|
||||
|
|
|
@ -87,6 +87,7 @@ add_library(qbt_base STATIC
|
|||
utils/random.h
|
||||
utils/string.h
|
||||
utils/version.h
|
||||
version.h
|
||||
|
||||
# sources
|
||||
asyncfilestorage.cpp
|
||||
|
@ -167,7 +168,6 @@ target_link_libraries(qbt_base
|
|||
PRIVATE
|
||||
OpenSSL::Crypto OpenSSL::SSL
|
||||
ZLIB::ZLIB
|
||||
qbt_version_definitions
|
||||
PUBLIC
|
||||
LibtorrentRasterbar::torrent-rasterbar
|
||||
Qt5::Core Qt5::Network Qt5::Xml
|
||||
|
|
|
@ -86,7 +86,8 @@ HEADERS += \
|
|||
$$PWD/utils/password.h \
|
||||
$$PWD/utils/random.h \
|
||||
$$PWD/utils/string.h \
|
||||
$$PWD/utils/version.h
|
||||
$$PWD/utils/version.h \
|
||||
$$PWD/version.h
|
||||
|
||||
SOURCES += \
|
||||
$$PWD/asyncfilestorage.cpp \
|
||||
|
|
|
@ -85,6 +85,7 @@
|
|||
#include "base/utils/misc.h"
|
||||
#include "base/utils/net.h"
|
||||
#include "base/utils/random.h"
|
||||
#include "base/version.h"
|
||||
#include "bandwidthscheduler.h"
|
||||
#include "common.h"
|
||||
#include "customstorage.h"
|
||||
|
|
|
@ -45,6 +45,7 @@
|
|||
#include "base/utils/fs.h"
|
||||
#include "base/utils/io.h"
|
||||
#include "base/utils/string.h"
|
||||
#include "base/version.h"
|
||||
#include "ltunderlyingtype.h"
|
||||
|
||||
namespace
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
|
||||
#include "base/logger.h"
|
||||
#include "base/net/downloadmanager.h"
|
||||
#include "base/version.h"
|
||||
|
||||
using namespace Net;
|
||||
|
||||
|
|
37
src/base/version.h.in
Normal file
37
src/base/version.h.in
Normal file
|
@ -0,0 +1,37 @@
|
|||
/*
|
||||
* Bittorrent Client using Qt and libtorrent.
|
||||
* Copyright (C) 2021 Mike Tzou (Chocobo1)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* In addition, as a special exception, the copyright holders give permission to
|
||||
* link this program with the OpenSSL project's "OpenSSL" library (or with
|
||||
* modified versions of it that use the same license as the "OpenSSL" library),
|
||||
* and distribute the linked executables. You must obey the GNU General Public
|
||||
* License in all respects for all of the code used other than "OpenSSL". If you
|
||||
* modify file(s), you may extend this exception to your version of the file(s),
|
||||
* but you are not obligated to do so. If you do not wish to do so, delete this
|
||||
* exception statement from your version.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define QBT_VERSION_MAJOR @VER_MAJOR@
|
||||
#define QBT_VERSION_MINOR @VER_MINOR@
|
||||
#define QBT_VERSION_BUGFIX @VER_BUGFIX@
|
||||
#define QBT_VERSION_BUILD @VER_BUILD@
|
||||
|
||||
#define QBT_VERSION "v@PROJECT_VERSION@"
|
||||
#define QBT_VERSION_2 "@PROJECT_VERSION@"
|
|
@ -32,6 +32,7 @@
|
|||
|
||||
#include "base/unicodestrings.h"
|
||||
#include "base/utils/misc.h"
|
||||
#include "base/version.h"
|
||||
#include "ui_aboutdialog.h"
|
||||
#include "uithememanager.h"
|
||||
#include "utils.h"
|
||||
|
|
|
@ -70,6 +70,7 @@
|
|||
#include "base/utils/fs.h"
|
||||
#include "base/utils/misc.h"
|
||||
#include "base/utils/password.h"
|
||||
#include "base/version.h"
|
||||
#include "aboutdialog.h"
|
||||
#include "addnewtorrentdialog.h"
|
||||
#include "autoexpandabledialog.h"
|
||||
|
|
|
@ -44,6 +44,7 @@
|
|||
#endif
|
||||
|
||||
#include "base/net/downloadmanager.h"
|
||||
#include "base/version.h"
|
||||
|
||||
namespace
|
||||
{
|
||||
|
|
|
@ -4,6 +4,7 @@ IDI_ICON1 ICON "icons\qbittorrent.ico"
|
|||
IDI_ICON2 ICON "icons\qbittorrent_file.ico"
|
||||
|
||||
#include <windows.h>
|
||||
#include "base/version.h"
|
||||
|
||||
#define VER_FILEVERSION QBT_VERSION_MAJOR,QBT_VERSION_MINOR,QBT_VERSION_BUGFIX,QBT_VERSION_BUILD
|
||||
#define VER_FILEVERSION_STR QBT_VERSION
|
||||
|
|
|
@ -57,6 +57,7 @@
|
|||
#include "base/utils/net.h"
|
||||
#include "base/utils/password.h"
|
||||
#include "base/utils/string.h"
|
||||
#include "base/version.h"
|
||||
#include "../webapplication.h"
|
||||
|
||||
void AppController::webapiVersionAction()
|
||||
|
|
15
version.pri
15
version.pri
|
@ -17,10 +17,11 @@ PROJECT_VERSION = $${VER_MAJOR}.$${VER_MINOR}.$${VER_BUGFIX}
|
|||
|
||||
PROJECT_VERSION = $${PROJECT_VERSION}$${VER_STATUS}
|
||||
|
||||
DEFINES += QBT_VERSION_MAJOR=$${VER_MAJOR}
|
||||
DEFINES += QBT_VERSION_MINOR=$${VER_MINOR}
|
||||
DEFINES += QBT_VERSION_BUGFIX=$${VER_BUGFIX}
|
||||
DEFINES += QBT_VERSION_BUILD=$${VER_BUILD}
|
||||
|
||||
DEFINES += QBT_VERSION=\\\"v$${PROJECT_VERSION}\\\"
|
||||
DEFINES += QBT_VERSION_2=\\\"$${PROJECT_VERSION}\\\"
|
||||
# Generate version header
|
||||
versionHeader = $$cat(src/base/version.h.in, blob)
|
||||
versionHeader = $$replace(versionHeader, "@VER_MAJOR@", $$VER_MAJOR)
|
||||
versionHeader = $$replace(versionHeader, "@VER_MINOR@", $$VER_MINOR)
|
||||
versionHeader = $$replace(versionHeader, "@VER_BUGFIX@", $$VER_BUGFIX)
|
||||
versionHeader = $$replace(versionHeader, "@VER_BUILD@", $$VER_BUILD)
|
||||
versionHeader = $$replace(versionHeader, "@PROJECT_VERSION@", $$PROJECT_VERSION)
|
||||
write_file(src/base/version.h, versionHeader)
|
||||
|
|
Loading…
Reference in a new issue