vdi-cloud/terminal/kiosk-shell/CMakeLists.txt

136 lines
4.5 KiB
CMake
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

cmake_minimum_required(VERSION 3.16)
project(kiosk-shell CXX)
# 对应《VDI 云桌面软件开发方案》2.2 节技术栈定版:
# kiosk 用 C/C++/Qt;会话通道统一 Moonlight(RDP 渲染管线已移除,代码存于 git 历史)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC 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 Network)
include(CTest)
set(KIOSK_SOURCES
resources/brand.qrc
src/main_window.cpp
src/login_page.cpp
src/desktop_list_page.cpp
src/desktop_settings_dialog.cpp
src/desktop_service.cpp
src/platform_client.cpp
src/system_metrics.cpp
src/terminal_policy.cpp
src/desktop_store.cpp
src/moonlight_session.cpp
src/transition_overlay.cpp
src/state_machine.cpp
src/config.cpp
)
add_executable(kiosk-shell src/main.cpp ${KIOSK_SOURCES})
target_include_directories(kiosk-shell PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/src
)
target_link_libraries(kiosk-shell PRIVATE
Qt5::Core
Qt5::Gui
Qt5::Widgets
Qt5::Network
)
if(UNIX AND NOT APPLE)
find_package(X11 REQUIRED)
target_link_libraries(kiosk-shell PRIVATE X11::X11)
endif()
# 看门狗 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)
if(BUILD_TESTING)
find_package(Qt5 REQUIRED COMPONENTS Test)
add_executable(test-system-metrics tests/test_system_metrics.cpp src/system_metrics.cpp)
target_include_directories(test-system-metrics PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src)
target_link_libraries(test-system-metrics PRIVATE Qt5::Core Qt5::Test)
add_test(NAME system-metrics COMMAND test-system-metrics)
add_executable(test-terminal-policy tests/test_terminal_policy.cpp src/terminal_policy.cpp)
target_include_directories(test-terminal-policy PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src)
target_link_libraries(test-terminal-policy PRIVATE Qt5::Core Qt5::Test)
add_test(NAME terminal-policy COMMAND test-terminal-policy)
if(UNIX)
find_package(Python3 REQUIRED COMPONENTS Interpreter)
add_test(NAME display-guard COMMAND ${Python3_EXECUTABLE}
${CMAKE_CURRENT_SOURCE_DIR}/tests/test_display_guard.py)
endif()
add_executable(test-moonlight-session
tests/test_moonlight_session.cpp
src/moonlight_session.cpp
)
target_include_directories(test-moonlight-session PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/src
)
target_link_libraries(test-moonlight-session PRIVATE
Qt5::Core
Qt5::Test
)
add_test(NAME moonlight-session COMMAND test-moonlight-session)
add_executable(test-desktop-list-page
tests/test_desktop_list_page.cpp
src/desktop_list_page.cpp
resources/brand.qrc
)
target_include_directories(test-desktop-list-page PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/src
)
target_link_libraries(test-desktop-list-page PRIVATE
Qt5::Core
Qt5::Gui
Qt5::Widgets
Qt5::Test
)
add_test(NAME desktop-list-page COMMAND test-desktop-list-page)
set_tests_properties(desktop-list-page PROPERTIES
ENVIRONMENT "QT_QPA_PLATFORM=offscreen"
)
# Render the native page at target resolutions without occupying the display.
add_executable(preview-desktop-list tests/preview_desktop_list.cpp
src/desktop_list_page.cpp resources/brand.qrc)
target_include_directories(preview-desktop-list PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src)
target_link_libraries(preview-desktop-list PRIVATE Qt5::Core Qt5::Gui Qt5::Widgets)
add_executable(test-main-window tests/test_main_window.cpp ${KIOSK_SOURCES})
target_include_directories(test-main-window PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src)
target_link_libraries(test-main-window PRIVATE
Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Network Qt5::Test)
if(UNIX AND NOT APPLE)
target_link_libraries(test-main-window PRIVATE X11::X11)
endif()
add_test(NAME main-window-boot COMMAND test-main-window)
set_tests_properties(main-window-boot PROPERTIES
ENVIRONMENT "QT_QPA_PLATFORM=offscreen;DISPLAY="
)
endif()
install(TARGETS kiosk-shell vdi-kiosk-monitor RUNTIME DESTINATION bin)