Complete C# server cutover
This commit is contained in:
+30
-34
@@ -3,19 +3,12 @@ project(CommonwealthOnlineHost)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
set(CMAKE_AUTORCC ON)
|
||||
set(CMAKE_AUTOUIC ON)
|
||||
|
||||
find_package(Qt6 COMPONENTS
|
||||
Core
|
||||
Gui
|
||||
Widgets
|
||||
Network
|
||||
Concurrent
|
||||
REQUIRED
|
||||
)
|
||||
find_package(Qt6 COMPONENTS Core Gui Widgets Network Concurrent REQUIRED)
|
||||
find_program(DOTNET_EXECUTABLE dotnet REQUIRED)
|
||||
|
||||
set(PROJECT_SOURCES
|
||||
src/main.cpp
|
||||
@@ -29,44 +22,47 @@ set(PROJECT_SOURCES
|
||||
)
|
||||
|
||||
add_executable(CommonwealthOnlineHost ${PROJECT_SOURCES})
|
||||
target_link_libraries(CommonwealthOnlineHost Qt6::Core Qt6::Gui Qt6::Widgets Qt6::Network Qt6::Concurrent)
|
||||
|
||||
target_link_libraries(CommonwealthOnlineHost
|
||||
Qt6::Core
|
||||
Qt6::Gui
|
||||
Qt6::Widgets
|
||||
Qt6::Network
|
||||
Qt6::Concurrent
|
||||
)
|
||||
|
||||
# Windows-specific settings
|
||||
if(WIN32)
|
||||
set_target_properties(CommonwealthOnlineHost PROPERTIES
|
||||
WIN32_EXECUTABLE ON
|
||||
VS_DPI_AWARE "ON"
|
||||
)
|
||||
set_target_properties(CommonwealthOnlineHost PROPERTIES WIN32_EXECUTABLE ON VS_DPI_AWARE "ON")
|
||||
set(CO_SERVER_RID "win-x64")
|
||||
set(CO_SERVER_EXECUTABLE_SUFFIX ".exe")
|
||||
else()
|
||||
set(CO_SERVER_RID "linux-x64")
|
||||
set(CO_SERVER_EXECUTABLE_SUFFIX "")
|
||||
endif()
|
||||
|
||||
# Set output directory
|
||||
set_target_properties(CommonwealthOnlineHost PROPERTIES
|
||||
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
|
||||
)
|
||||
set_target_properties(CommonwealthOnlineHost PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
|
||||
|
||||
# Stage the Python relay server next to the Host GUI executable so
|
||||
# ServerProcess can find consumer_server_cli.py at runtime.
|
||||
# Preserve a local commonwealth-server.json if the host already edited it.
|
||||
set(CO_SERVER_SOURCE_DIR "${CMAKE_SOURCE_DIR}/server")
|
||||
set(CO_SERVER_PROJECT "${CO_SERVER_SOURCE_DIR}/CommonwealthOnline.Server.csproj")
|
||||
set(CO_SERVER_PUBLISH_DIR "${CMAKE_BINARY_DIR}/server-publish/${CO_SERVER_RID}")
|
||||
set(CO_SERVER_STAGE_DIR "$<TARGET_FILE_DIR:CommonwealthOnlineHost>/server")
|
||||
set(CO_SERVER_STAGE_CONFIG "${CO_SERVER_STAGE_DIR}/commonwealth-server.json")
|
||||
if(NOT EXISTS "${CO_SERVER_SOURCE_DIR}/consumer_server_cli.py")
|
||||
message(FATAL_ERROR
|
||||
"Bundled server source not found at ${CO_SERVER_SOURCE_DIR}/consumer_server_cli.py")
|
||||
|
||||
if(NOT EXISTS "${CO_SERVER_PROJECT}")
|
||||
message(FATAL_ERROR "Bundled C# server project not found at ${CO_SERVER_PROJECT}")
|
||||
endif()
|
||||
|
||||
add_custom_command(TARGET CommonwealthOnlineHost POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory "${CO_SERVER_STAGE_DIR}"
|
||||
COMMAND ${CMAKE_COMMAND} -E rm -rf "${CO_SERVER_PUBLISH_DIR}"
|
||||
COMMAND ${DOTNET_EXECUTABLE} publish "${CO_SERVER_PROJECT}"
|
||||
-c Release
|
||||
-r ${CO_SERVER_RID}
|
||||
--self-contained true
|
||||
-p:PublishSingleFile=true
|
||||
-p:DebugType=None
|
||||
-p:DebugSymbols=false
|
||||
-o "${CO_SERVER_PUBLISH_DIR}"
|
||||
--nologo
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
-DCO_SERVER_SOURCE_DIR=${CO_SERVER_SOURCE_DIR}
|
||||
-DCO_SERVER_PUBLISH_DIR=${CO_SERVER_PUBLISH_DIR}
|
||||
-DCO_SERVER_STAGE_DIR=${CO_SERVER_STAGE_DIR}
|
||||
-DCO_SERVER_STAGE_CONFIG=${CO_SERVER_STAGE_CONFIG}
|
||||
-DCO_SERVER_EXECUTABLE_SUFFIX=${CO_SERVER_EXECUTABLE_SUFFIX}
|
||||
-P "${CMAKE_SOURCE_DIR}/cmake/stage_server.cmake"
|
||||
COMMENT "Copying Python server next to CommonwealthOnlineHost.exe"
|
||||
COMMENT "Publishing and staging C# Commonwealth Online server"
|
||||
VERBATIM
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user