mingw: Disable stack printing when using MINGW compiler.

This commit is contained in:
2025-06-20 16:20:34 +08:00
parent 6941e1b893
commit 6aea5f6614
8 changed files with 42 additions and 6 deletions

View File

@@ -10,6 +10,12 @@ if (MSVC)
add_compile_options(/utf-8) add_compile_options(/utf-8)
endif() endif()
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" AND CMAKE_SYSTEM_NAME MATCHES "Windows")
message(STATUS "frelay use MINGW compiler.")
set(COMPILER_USE_MINGW ON)
add_definitions(-DCOMPILER_USE_MINGW)
endif()
if(WIN32) if(WIN32)
execute_process(COMMAND cmd /c ver execute_process(COMMAND cmd /c ver
OUTPUT_VARIABLE VER_OUTPUT OUTPUT_VARIABLE VER_OUTPUT

View File

@@ -13,5 +13,10 @@ find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core Network)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Network) find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Network)
add_executable(frelayConsole Console.h Console.cpp main.cpp ../Res/ico.rc) add_executable(frelayConsole Console.h Console.cpp main.cpp ../Res/ico.rc)
target_link_libraries(frelayConsole PRIVATE Protocol Util crashelper) target_link_libraries(frelayConsole PRIVATE Protocol Util)
if(NOT DEFINED COMPILER_USE_MINGW)
target_link_libraries(frelayConsole PRIVATE crashelper)
endif()
target_link_libraries(frelayConsole PRIVATE Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Network) target_link_libraries(frelayConsole PRIVATE Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Network)

View File

@@ -1,11 +1,16 @@
#include <QCoreApplication> #include <QCoreApplication>
#include <Util.h> #include <Util.h>
#include <crashelper.h>
#include "Console.h" #include "Console.h"
#ifndef COMPILER_USE_MINGW
#include <crashelper.h>
#endif
int main(int argc, char* argv[]) int main(int argc, char* argv[])
{ {
#ifndef COMPILER_USE_MINGW
auto configDir = Util::GetCurConfigPath("frelay"); auto configDir = Util::GetCurConfigPath("frelay");
#ifdef _WIN32 #ifdef _WIN32
backward::SetDumpFileSavePath(configDir + "/dumpfile"); backward::SetDumpFileSavePath(configDir + "/dumpfile");
@@ -13,6 +18,8 @@ int main(int argc, char* argv[])
#else #else
backward::SetDumpLogSavePath(configDir + QDir::separator() + "dumplog"); backward::SetDumpLogSavePath(configDir + QDir::separator() + "dumplog");
#endif #endif
#endif
QCoreApplication app(argc, argv); QCoreApplication app(argc, argv);
Util::InitLogger("frelayConsole.log", "frelayConsole"); Util::InitLogger("frelayConsole.log", "frelayConsole");

View File

@@ -56,8 +56,12 @@ target_link_libraries(frelayGUI PRIVATE
ClientCore Protocol ClientCore Protocol
Util Util
Struct Struct
crashelper
) )
if(NOT DEFINED COMPILER_USE_MINGW)
target_link_libraries(frelayGUI PRIVATE crashelper)
endif()
if (CMAKE_CXX_COMPILER_ID MATCHES "GNU" AND CMAKE_SYSTEM_NAME MATCHES "Windows") if (CMAKE_CXX_COMPILER_ID MATCHES "GNU" AND CMAKE_SYSTEM_NAME MATCHES "Windows")
target_link_libraries(frelayGUI PRIVATE ws2_32 wsock32) target_link_libraries(frelayGUI PRIVATE ws2_32 wsock32)
endif() endif()

View File

@@ -4,18 +4,21 @@
#include "frelayGUI.h" #include "frelayGUI.h"
#ifndef ZZXXCC #ifndef COMPILER_USE_MINGW
#include <crashelper.h> #include <crashelper.h>
#endif #endif
int main(int argc, char* argv[]) int main(int argc, char* argv[])
{ {
#ifndef COMPILER_USE_MINGW
auto configDir = Util::GetCurConfigPath("frelay"); auto configDir = Util::GetCurConfigPath("frelay");
#ifdef _WIN32 #ifdef _WIN32
backward::SetDumpFileSavePath(configDir + "/dumpfile"); backward::SetDumpFileSavePath(configDir + "/dumpfile");
backward::SetDumpLogSavePath(configDir + "/dumplog"); backward::SetDumpLogSavePath(configDir + "/dumplog");
#else #else
backward::SetDumpLogSavePath(configDir + QDir::separator() + "dumplog"); backward::SetDumpLogSavePath(configDir + QDir::separator() + "dumplog");
#endif
#endif #endif
CRASHELPER_MARK_ENTRY(); CRASHELPER_MARK_ENTRY();

View File

@@ -13,5 +13,10 @@ find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core Network)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Network) find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Network)
add_executable(frelayServer Server.h Server.cpp main.cpp ../Res/server.rc) add_executable(frelayServer Server.h Server.cpp main.cpp ../Res/server.rc)
target_link_libraries(frelayServer PRIVATE Protocol Util crashelper) target_link_libraries(frelayServer PRIVATE Protocol Util)
if(NOT DEFINED COMPILER_USE_MINGW)
target_link_libraries(frelayServer PRIVATE crashelper)
endif()
target_link_libraries(frelayServer PRIVATE Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Network) target_link_libraries(frelayServer PRIVATE Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Network)

View File

@@ -7,7 +7,6 @@
#include <QTcpServer> #include <QTcpServer>
#include <QTcpSocket> #include <QTcpSocket>
#include <QTimer> #include <QTimer>
#include <crashelper.h>
#include "Protocol.h" #include "Protocol.h"

View File

@@ -3,14 +3,21 @@
#include "Server.h" #include "Server.h"
#ifndef COMPILER_USE_MINGW
#include <crashelper.h>
#endif
int main(int argc, char* argv[]) int main(int argc, char* argv[])
{ {
#ifndef COMPILER_USE_MINGW
auto configDir = Util::GetCurConfigPath("frelay"); auto configDir = Util::GetCurConfigPath("frelay");
#ifdef _WIN32 #ifdef _WIN32
backward::SetDumpFileSavePath(configDir + "/dumpfile"); backward::SetDumpFileSavePath(configDir + "/dumpfile");
backward::SetDumpLogSavePath(configDir + "/dumplog"); backward::SetDumpLogSavePath(configDir + "/dumplog");
#else #else
backward::SetDumpLogSavePath(configDir + QDir::separator() + "dumplog"); backward::SetDumpLogSavePath(configDir + QDir::separator() + "dumplog");
#endif
#endif #endif
QCoreApplication app(argc, argv); QCoreApplication app(argc, argv);