fix: Allow Gui to work with core ,server or client binaries

fixes: #7951
This commit is contained in:
sithlord48
2025-08-18 20:56:02 -04:00
committed by Nick Bolton
parent b2aa638b1f
commit 7cac145500
3 changed files with 38 additions and 10 deletions

View File

@ -1,8 +1,24 @@
# SPDX-FileCopyrightText: (C) 2024 - 2025 Chris Rizzitello <sithlord48@gmail.com>
# SPDX-License-Identifier: MIT
if(BUILD_UNIFIED)
set(CLIENT_BINARY "${CMAKE_PROJECT_NAME}-core")
set(SERVER_BINARY "${CMAKE_PROJECT_NAME}-core")
else()
set(CLIENT_BINARY "${CMAKE_PROJECT_NAME}-client")
set(SERVER_BINARY "${CMAKE_PROJECT_NAME}-server")
endif()
if(WIN32)
string(APPEND CLIENT_BINARY ".exe")
string(APPEND SERVER_BINARY ".exe")
endif()
configure_file(Constants.h.in Constants.h @ONLY)
unset(CLIENT_BINARY)
unset(SERVER_BINARY)
add_library(common STATIC
Common.h
Settings.h

View File

@ -21,6 +21,10 @@ const auto kCopyright = //
"Copyright (C) 2009-2012 Nick Bolton\n"
"Copyright (C) 2002-2009 Chris Schoeneman";
const auto kClientBinName = "@CLIENT_BINARY@";
const auto kServerBinName = "@SERVER_BINARY@";
#ifndef NDEBUG
const auto kDebugBuild = true;
#else
@ -44,13 +48,7 @@ const auto kWindowsRegistryKey = "SOFTWARE\\@CMAKE_PROJECT_PROPER_NAME@";
const auto kCloseEventName = "Global\\@CMAKE_PROJECT_PROPER_NAME@Close";
const auto kSendSasEventName = "Global\\@CMAKE_PROJECT_PROPER_NAME@SendSAS";
const auto kClientBinName = "@CMAKE_PROJECT_NAME@-client.exe";
const auto kServerBinName = "@CMAKE_PROJECT_NAME@-server.exe";
#else
const auto kClientBinName = "@CMAKE_PROJECT_NAME@-client";
const auto kServerBinName = "@CMAKE_PROJECT_NAME@-server";
#endif

View File

@ -330,6 +330,8 @@ void CoreProcess::handleLogLines(const QString &text)
void CoreProcess::start(std::optional<ProcessMode> processModeOption)
{
using enum Settings::CoreMode;
QMutexLocker locker(&m_processMutex);
const auto currentMode = Settings::value(Settings::Core::ProcessMode).value<ProcessMode>();
@ -363,16 +365,28 @@ void CoreProcess::start(std::optional<ProcessMode> processModeOption)
QString app;
QStringList args;
addGenericArgs(args, processMode);
if (mode() == Settings::CoreMode::Server && !addServerArgs(args, app)) {
if (mode() == Server && !addServerArgs(args, app)) {
qWarning("failed to add server args for core process, aborting start");
return;
} else if (mode() == Settings::CoreMode::Client && !addClientArgs(args, app)) {
} else if (mode() == Client && !addClientArgs(args, app)) {
qWarning("failed to add client args for core process, aborting start");
return;
}
if (app.endsWith("core") || app.endsWith("core.exe")) {
if (mode() == Server) {
args.prepend("server");
} else if (mode() == Client) {
args.prepend("client");
} else {
qFatal("core started without mode");
return;
}
}
qDebug().noquote() << "log level:" << Settings::logLevelText();
if (Settings::value(Settings::Log::ToFile).toBool())