build: generate version info, use it for all sources of version

This commit is contained in:
sithlord48
2024-11-26 22:16:34 -05:00
committed by Chris Rizzitello
parent f321f6596b
commit 4a83eb711f
15 changed files with 39 additions and 114 deletions

View File

@ -64,8 +64,6 @@ set(DESKFLOW_VERSION_MS_CSV
"${DESKFLOW_VERSION_MAJOR},${DESKFLOW_VERSION_MINOR},${DESKFLOW_VERSION_PATCH},${DESKFLOW_VERSION_TWEAK}"
)
add_definitions(-DDESKFLOW_VERSION="${DESKFLOW_VERSION}")
#Define our project
project(
deskflow

View File

@ -26,7 +26,6 @@ macro(configure_definitions)
# Shorten the Git SHA to 8 chars for readability
string(SUBSTRING "$ENV{GIT_SHA}" 0 8 GIT_SHA_SHORT)
message(STATUS "Short Git SHA: ${GIT_SHA_SHORT}")
add_definitions(-DGIT_SHA_SHORT="${GIT_SHA_SHORT}")
endif()
if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug")

View File

@ -335,7 +335,6 @@ macro(configure_windows_libs)
/DWIN32
/D_WINDOWS
/D_CRT_SECURE_NO_WARNINGS
/DDESKFLOW_VERSION=\"${DESKFLOW_VERSION}\"
/D_XKEYCHECK_H)
configure_openssl()

View File

@ -73,9 +73,9 @@ elseif(APPLE)
MACOSX_BUNDLE_ICON_FILE Deskflow.icns
MACOSX_BUNDLE_INFO_STRING "${CMAKE_PROJECT_DESCRIPTION}"
MACOSX_BUNDLE_COPYRIGHT "© 2024 Deskflow Developers"
MACOSX_BUNDLE_BUNDLE_VERSION ${DESKFLOW_VERSION}
MACOSX_BUNDLE_LONG_VERSION_STRING ${DESKFLOW_VERSION}
MACOSX_BUNDLE_SHORT_VERSION_STRING ${DESKFLOW_VERSION}
MACOSX_BUNDLE_BUNDLE_VERSION ${CMAKE_PROJECT_VERSION}
MACOSX_BUNDLE_LONG_VERSION_STRING ${CMAKE_PROJECT_VERSION}
MACOSX_BUNDLE_SHORT_VERSION_STRING ${CMAKE_PROJECT_VERSION}
)
find_program(MACDEPLOYQT_BIN macdeployqt6)
add_custom_command(

View File

@ -155,8 +155,8 @@ void MainWindow::setupControls()
ui->m_pLabelIpAddresses->setText(QString("This computer's IP addresses: %1").arg(getIPAddresses()));
if (m_AppConfig.lastVersion() != DESKFLOW_VERSION) {
m_AppConfig.setLastVersion(DESKFLOW_VERSION);
if (m_AppConfig.lastVersion() != kVersion) {
m_AppConfig.setLastVersion(kVersion);
}
#if defined(Q_OS_MAC)

View File

@ -19,8 +19,8 @@
#include "AboutDialog.h"
#include "common/constants.h"
#include "common/copyright.h"
#include "common/version.h"
#include "gui/style_utils.h"
#include <QClipboard>
@ -34,19 +34,21 @@ AboutDialog::AboutDialog(QWidget *parent) : QDialog(parent)
{
setWindowTitle(tr("About Deskflow"));
QString version = QString::fromStdString(deskflow::version());
auto copyIcon = QIcon::fromTheme(
QIcon::ThemeIcon::EditCopy, deskflow::gui::isDarkMode() ? QIcon(s_darkCopy) : QIcon(s_lightCopy)
);
auto btnCopyVersion = new QPushButton(copyIcon, QString(), this);
btnCopyVersion->setFlat(true);
connect(btnCopyVersion, &QPushButton::clicked, this, [version] { qApp->clipboard()->setText(version); });
connect(btnCopyVersion, &QPushButton::clicked, this, [] { QGuiApplication::clipboard()->setText(kVersion); });
auto versionString = QString(kVersion);
if (!QString(kVersionGitSha).isEmpty())
versionString.append(QStringLiteral(" (%1)").arg(kVersionGitSha));
auto versionLayout = new QHBoxLayout();
versionLayout->addWidget(new QLabel(tr("Version:")));
versionLayout->addWidget(new QLabel(version));
versionLayout->addWidget(new QLabel(versionString, this));
versionLayout->addWidget(btnCopyVersion);
versionLayout->addSpacerItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Fixed));

View File

@ -19,7 +19,6 @@
#include "MainWindow.h"
#include "SetupWizard.h"
#include "common/constants.h"
#include "common/version.h"
#include "gui/Logger.h"
#include "gui/config/AppConfig.h"
#include "gui/config/ConfigScopes.h"
@ -92,8 +91,7 @@ int main(int argc, char *argv[])
#endif
qInstallMessageHandler(deskflow::gui::messages::messageHandler);
QString version = QString::fromStdString(deskflow::version());
qInfo("%s v%s", kAppName, qPrintable(version));
qInfo("%s v%s", kAppName, qPrintable(kVersion));
dotenv();
Logger::instance().loadEnvVars();

View File

@ -1,11 +1,13 @@
# SPDX-FileCopyrightText: (C) 2024 Chris Rizzitello <sithlord48@gmail.com>
# SPDX-License-Identifier: MIT
set(CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE ON)
configure_file(constants.h.in constants.h @ONLY)
add_library(common INTERFACE
basic_types.h
common.h
constants.h
copyright.h
IInterface.h
ipc.h
@ -23,15 +25,10 @@ add_library(common INTERFACE
stdsstream.h
stdstring.h
stdvector.h
version.h
${CMAKE_CURRENT_BINARY_DIR}/constants.h
)
if(APPLE)
target_sources(common INTERFACE MacOSXPrecomp.h)
endif()
target_include_directories(common
INTERFACE
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR}
)

View File

@ -1,40 +0,0 @@
/*
* Deskflow -- mouse and keyboard sharing utility
* Copyright (C) 2012 Symless Ltd.
* Copyright (C) 2002 Chris Schoeneman
*
* This package is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* found in the file LICENSE that should have accompanied this file.
*
* This package 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, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#if !defined(DESKFLOW_VERSION)
#error version was not passed to the compiler
#endif
const auto kAppName = "Deskflow";
const auto kAppId = "deskflow";
const auto kAppDescription = "Mouse and keyboard sharing utility";
const auto kVersion = DESKFLOW_VERSION;
#ifdef GIT_SHA_SHORT
const auto kVersionGitSha = GIT_SHA_SHORT;
#else
const auto kVersionGitSha = "";
#endif
#ifndef NDEBUG
const auto kDebugBuild = true;
#else
const auto kDebugBuild = false;
#endif

View File

@ -0,0 +1,19 @@
// SPDX-FileCopyrightText: (C) 2024 Chris Rizzitello <sithlord48@gmail.com>
// SPDX-FileCopyrightText: (C) 2012 Symless Ltd.
// SPDX-FileCopyrightText: (C) 2002 Chris Schoeneman
// SPDX-License-Identifier: GPL-2.0-only
#pragma once
const auto kAppName = "Deskflow";
const auto kAppId = "deskflow";
const auto kAppDescription = "@CMAKE_PROJECT_DESCRIPTION@";
const auto kVersion = "@CMAKE_PROJECT_VERSION@";
const auto kVersionGitSha = "@GIT_SHA_SHORT@";
#ifndef NDEBUG
const auto kDebugBuild = true;
#else
const auto kDebugBuild = false;
#endif

View File

@ -1,38 +0,0 @@
/*
* Deskflow -- mouse and keyboard sharing utility
* Copyright (C) 2024 Symless Ltd.
*
* This package is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* found in the file LICENSE that should have accompanied this file.
*
* This package 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, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "constants.h"
#include <string>
namespace deskflow {
inline std::string version()
{
std::string result = kVersion;
std::string gitSha = kVersionGitSha;
if (!gitSha.empty()) {
result.append(" (");
result.append(gitSha);
result.append(")");
}
return result;
}
} // namespace deskflow

View File

@ -16,10 +16,6 @@
*/
// clang-format off
/* Define version here for Unix, but using /D for Windows. */
#cmakedefine DESKFLOW_VERSION "@DESKFLOW_VERSION@"
/* Define to the base type of arg 3 for `accept`. */
#cmakedefine ACCEPT_TYPE_ARG3 @ACCEPT_TYPE_ARG3@

View File

@ -29,7 +29,6 @@
#include "common/constants.h"
#include "common/copyright.h"
#include "common/ipc.h"
#include "common/version.h"
#include "deskflow/ArgsBase.h"
#include "deskflow/Config.h"
#include "deskflow/XDeskflow.h"
@ -93,13 +92,11 @@ App::~App()
void App::version()
{
const auto version = deskflow::version();
const auto kBufferLength = 1024;
std::vector<char> buffer(kBufferLength);
std::snprintf( // NOSONAR
buffer.data(), kBufferLength, "%s v%s, protocol v%d.%d\n%s", //
argsBase().m_pname, version.c_str(), kProtocolMajorVersion, kProtocolMinorVersion, deskflow::kCopyright
argsBase().m_pname, kVersion, kProtocolMajorVersion, kProtocolMinorVersion, deskflow::kCopyright
);
std::cout << std::string(buffer.data()) << std::endl;

View File

@ -63,7 +63,7 @@ void VersionChecker::replyFinished(QNetworkReply *reply)
const auto newestVersion = QString(reply->readAll());
qDebug("version check response: %s", qPrintable(newestVersion));
if (!newestVersion.isEmpty() && compareVersions(DESKFLOW_VERSION, newestVersion) > 0) {
if (!newestVersion.isEmpty() && compareVersions(kVersion, newestVersion) > 0) {
qDebug("update found");
Q_EMIT updateFound(newestVersion);
} else {

View File

@ -19,7 +19,6 @@
#include "Logger.h"
#include "common/constants.h"
#include "common/version.h"
#include "constants.h"
#include "env_vars.h"
#include "styles.h"
@ -66,8 +65,7 @@ void showErrorDialog(const QString &message, const QString &fileLine, QtMsgType
" and copy/paste the following error:</p>")
.arg(kUrlHelp, kColorSecondary);
const QString version = QString::fromStdString(deskflow::version());
text += QString("<pre>v%1\n%2\n%3</pre>").arg(version, message, fileLine);
text += QString("<pre>v%1\n%2\n%3</pre>").arg(kVersion, message, fileLine);
if (type == QtFatalMsg) {
// create a blocking message box for fatal errors, as we want to wait