cmake_minimum_required(VERSION 3.20) project(LauncherDemo LANGUAGES C CXX) # C++标准 set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) # Qt 自动处理ui/moc/rcc set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTORCC ON) # 依赖Qt模块:网络、基础核心、窗口 set(CMAKE_PREFIX_PATH "C:\\Qt\\5.15.2\\msvc2019_64" ${CMAKE_PREFIX_PATH}) find_package(Qt5 REQUIRED COMPONENTS Core Network Gui Widgets) # 所有源码文件 set(SRC_LIST main.cpp UpdateLogic.h UpdateLogic.cpp ) # 生成可执行程序 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} --debug $ COMMENT "自动部署Qt依赖dll" ) endif()