2026-07-09 09:17:30 +00:00
|
|
|
cmake_minimum_required(VERSION 3.20)
|
|
|
|
|
project(LauncherDemo LANGUAGES C CXX)
|
|
|
|
|
# C++标准
|
|
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
|
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
2026-07-14 01:37:06 +00:00
|
|
|
# Qt 自动处理ui/moc/rcc
|
|
|
|
|
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
|
|
|
|
set(CMAKE_AUTOMOC ON)
|
|
|
|
|
set(CMAKE_AUTOUIC ON)
|
|
|
|
|
set(CMAKE_AUTORCC ON)
|
|
|
|
|
|
|
|
|
|
# 所有源码文件
|
|
|
|
|
set(SRC_LIST
|
|
|
|
|
main.cpp
|
|
|
|
|
UpdateLogic.h
|
|
|
|
|
UpdateLogic.cpp
|
|
|
|
|
${CMAKE_SOURCE_DIR}/i18n/update-client.qrc
|
|
|
|
|
)
|
2026-07-09 09:17:30 +00:00
|
|
|
# 生成可执行程序
|
|
|
|
|
add_executable(Launcher ${SRC_LIST})
|
|
|
|
|
if(WIN32)
|
|
|
|
|
set_target_properties(Launcher PROPERTIES WIN32_EXECUTABLE TRUE)
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
# 关键:添加OpenSSL头文件目录
|
|
|
|
|
target_include_directories(Launcher PRIVATE ${OPENSSL_INC})
|
|
|
|
|
|
|
|
|
|
# 链接Common,自动带上OpenSSL库
|
|
|
|
|
target_link_libraries(Launcher Common Qt5::Core Qt5::Network Qt5::Gui Qt5::Widgets)
|
|
|
|
|
# 输出编译产物到 out 文件夹(干净不乱)
|
|
|
|
|
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/out/lib)
|
|
|
|
|
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/out/bin)
|
|
|
|
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/out/bin)
|
|
|
|
|
# 强制VS打开CMake文件夹时默认选中该可执行目标
|
|
|
|
|
set_property(DIRECTORY ${CMAKE_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT Launcher)
|
|
|
|
|
# 编译完成自动执行windeployqt,复制Qt dll到exe目录
|
|
|
|
|
if(WIN32)
|
|
|
|
|
get_target_property(QT_WINDEPLOYQT_EXE Qt5::qmake IMPORTED_LOCATION)
|
|
|
|
|
get_filename_component(QT_BIN_PATH "${QT_WINDEPLOYQT_EXE}" DIRECTORY)
|
|
|
|
|
set(WINDEPLOYQT "${QT_BIN_PATH}/windeployqt.exe")
|
|
|
|
|
add_custom_command(TARGET Launcher POST_BUILD
|
|
|
|
|
COMMAND ${WINDEPLOYQT} $<IF:$<CONFIG:Debug>,--debug,--release> $<TARGET_FILE:Launcher>
|
|
|
|
|
COMMENT "自动部署Qt依赖dll"
|
|
|
|
|
)
|
|
|
|
|
endif()
|