cmake_minimum_required(VERSION 3.16) project(kiosk-shell CXX) # 对应《VDI 云桌面软件开发方案》2.2 节技术栈定版: # kiosk 与 freerdp 插件用 C/C++(贴合 GTK/GStreamer 生态) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_AUTOMOC ON) set(CMAKE_INCLUDE_CURRENT_DIR ON) if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release) endif() # ---- Qt5 ---- find_package(Qt5 REQUIRED COMPONENTS Core Gui Widgets) # ---- FreeRDP 3 ---- find_package(PkgConfig REQUIRED) pkg_check_modules(FREERDP REQUIRED IMPORTED_TARGET freerdp3) add_executable(kiosk-shell src/main.cpp src/main_window.cpp src/login_page.cpp src/desktop_list_page.cpp src/desktop_settings_dialog.cpp src/desktop_service.cpp src/desktop_store.cpp src/moonlight_session.cpp src/state_machine.cpp src/config.cpp src/rdp_session.cpp ) target_include_directories(kiosk-shell PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src ) target_link_libraries(kiosk-shell PRIVATE Qt5::Core Qt5::Gui Qt5::Widgets PkgConfig::FREERDP ) # 看门狗 Monitor:独立进程,监控主进程假死/崩溃 add_executable(vdi-kiosk-monitor src/monitor_main.cpp src/monitor.cpp ) target_include_directories(vdi-kiosk-monitor PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src ) find_package(Threads REQUIRED) target_link_libraries(vdi-kiosk-monitor PRIVATE Threads::Threads) install(TARGETS kiosk-shell vdi-kiosk-monitor RUNTIME DESTINATION bin)