Files
update-client/CMakeLists.txt
T

134 lines
4.3 KiB
CMake
Raw Normal View History

2026-07-09 09:17:30 +00:00
cmake_minimum_required(VERSION 3.20)
project(SimCAEUpdateClient LANGUAGES C CXX)
set(UPDATE_CLIENT_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
set(UPDATE_CLIENT_IS_STANDALONE OFF)
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
set(UPDATE_CLIENT_IS_STANDALONE ON)
endif()
2026-07-09 09:17:30 +00:00
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
2026-07-09 09:17:30 +00:00
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)
if(MSVC)
add_compile_options(/utf-8)
endif()
cmake_path(
ABSOLUTE_PATH UPDATE_CLIENT_SOURCE_DIR
BASE_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/.."
NORMALIZE
OUTPUT_VARIABLE _update_client_source_root
)
cmake_path(GET _update_client_source_root PARENT_PATH _update_client_parent_root)
set(
UPDATE_CLIENT_THIRDPARTY_ROOT
"${_update_client_parent_root}/3rdparty"
CACHE PATH
"Root directory for update-client third-party packages"
)
option(
UPDATE_CLIENT_STRICT_THIRDPARTY
"Require OpenSSL imported library and include paths to stay under the third-party root"
ON
)
set(
UPDATE_CLIENT_PRODUCT_CONFIG_FILE
""
CACHE FILEPATH
"Exact product config to embed; empty selects config/config.json then the example"
)
set(
UPDATE_CLIENT_LAUNCH_TOKEN
""
CACHE STRING
"Optional build-provided launch ticket token override"
)
mark_as_advanced(UPDATE_CLIENT_LAUNCH_TOKEN)
set(UPDATE_CLIENT_MAIN_EXECUTABLE "" CACHE STRING "Override main_executable in embedded config")
set(UPDATE_CLIENT_LAUNCHER_EXECUTABLE "" CACHE STRING "Override launcher_executable in embedded config")
set(UPDATE_CLIENT_UPDATER_EXECUTABLE "" CACHE STRING "Override updater_executable in embedded config")
set(UPDATE_CLIENT_BOOTSTRAP_EXECUTABLE "" CACHE STRING "Override bootstrap_executable in embedded config")
set(UPDATE_CLIENT_PLATFORM "" CACHE STRING "Override platform in embedded config")
set(UPDATE_CLIENT_ARCH "" CACHE STRING "Override arch in embedded config")
if(WIN32)
set(_update_client_deploy_qt_default ON)
else()
set(_update_client_deploy_qt_default OFF)
endif()
option(
UPDATE_CLIENT_DEPLOY_QT_RUNTIME
"Run the Qt deployment tool after building each Qt executable"
${_update_client_deploy_qt_default}
)
option(
UPDATE_CLIENT_REQUIRE_TRANSLATIONS
"Fail configuration when translations/update-client_zh_CN.ts is absent"
OFF
)
option(
UPDATE_CLIENT_INSTALL_RUNTIME_ASSETS
"Install update-client runtime assets from this project"
${UPDATE_CLIENT_IS_STANDALONE}
)
list(PREPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
include(UpdateClientDependencies)
include(UpdateClientResources)
update_client_find_dependencies()
update_client_select_product_config(_update_client_product_config_source)
update_client_generate_normalized_product_config(
_update_client_product_config
"${_update_client_product_config_source}"
)
update_client_create_embedded_resources(
UpdateClientEmbeddedResources
"${_update_client_product_config}"
)
add_custom_target(UpdateClientNoHanCheck ALL
COMMAND "${CMAKE_COMMAND}"
"-DUPDATE_CLIENT_SCAN_ROOT=${CMAKE_CURRENT_SOURCE_DIR}"
-P "${CMAKE_CURRENT_SOURCE_DIR}/cmake/CheckNoHan.cmake"
COMMENT "Checking update-client production sources for Han characters"
VERBATIM
)
add_dependencies(UpdateClientEmbeddedResources UpdateClientNoHanCheck)
if(UPDATE_CLIENT_IS_STANDALONE)
if(NOT CMAKE_ARCHIVE_OUTPUT_DIRECTORY)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/out/lib")
endif()
if(NOT CMAKE_LIBRARY_OUTPUT_DIRECTORY)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/out/bin")
endif()
if(NOT CMAKE_RUNTIME_OUTPUT_DIRECTORY)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/out/bin")
endif()
endif()
2026-07-09 09:17:30 +00:00
add_subdirectory(Bootstrap)
add_subdirectory(Common)
add_subdirectory(Launcher)
add_subdirectory(Updater)
add_subdirectory(MainApp)
foreach(_update_client_primary_target IN ITEMS
Bootstrap Common Launcher Updater MainApp)
add_dependencies("${_update_client_primary_target}" UpdateClientNoHanCheck)
2026-07-09 09:17:30 +00:00
endforeach()
set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" PROPERTY VS_STARTUP_PROJECT Launcher)
if(UPDATE_CLIENT_INSTALL_RUNTIME_ASSETS)
update_client_install_openssl_runtime(bin)
2026-07-09 09:17:30 +00:00
endif()