DSH-1 ended with a negative result: the Frame's system WebEngine can't be loaded, and bundling our own failed (no sandbox, ICU resources, Vulkan abort, empty page). Reverts the tab (60deb43), the container packages (0676998) and the bundler's WebEngine support (b823ff3,e2cfa8e), and updates the docs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
79 lines
3.2 KiB
CMake
79 lines
3.2 KiB
CMake
configure_file(AppConfig.h.in ${CMAKE_CURRENT_BINARY_DIR}/generated/AppConfig.h @ONLY)
|
|
|
|
# Everything except main() lives in a static library: the dashboard executables and
|
|
# the tests link against it.
|
|
qt_add_library(vrdashboard_core STATIC
|
|
app/DashboardApplication.h app/DashboardApplication.cpp
|
|
app/Surface.h app/Surface.cpp
|
|
vr/Overlay.h vr/Overlay.cpp
|
|
render/RenderBackend.h render/RenderBackend.cpp
|
|
render/OpenGLRenderBackend.h render/OpenGLRenderBackend.cpp
|
|
render/OffscreenQuickRenderer.h render/OffscreenQuickRenderer.cpp
|
|
vr/VrRuntime.h vr/VrRuntime.cpp
|
|
vr/DashboardOverlay.h vr/DashboardOverlay.cpp
|
|
input/OverlayInputBridge.h input/OverlayInputBridge.cpp
|
|
input/ControllerNavigation.h input/ControllerNavigation.cpp
|
|
)
|
|
target_include_directories(vrdashboard_core PUBLIC
|
|
${CMAKE_CURRENT_SOURCE_DIR}
|
|
${CMAKE_CURRENT_BINARY_DIR}/generated)
|
|
target_link_libraries(vrdashboard_core PUBLIC
|
|
Qt6::Core Qt6::Gui Qt6::OpenGL Qt6::Qml Qt6::Quick Qt6::QuickControls2
|
|
OpenVR::OpenVR)
|
|
target_compile_options(vrdashboard_core PRIVATE -Wall -Wextra)
|
|
|
|
# Optional Vulkan backend: needs the Vulkan headers and a Qt built with Vulkan support.
|
|
if(VRDASH_VULKAN STREQUAL "AUTO")
|
|
find_package(Vulkan QUIET)
|
|
set(_vulkan_ok FALSE)
|
|
if(TARGET Vulkan::Headers AND QT_FEATURE_vulkan)
|
|
set(_vulkan_ok TRUE)
|
|
endif()
|
|
elseif(VRDASH_VULKAN)
|
|
find_package(Vulkan REQUIRED)
|
|
if(NOT QT_FEATURE_vulkan)
|
|
message(FATAL_ERROR "VRDASH_VULKAN=ON but Qt was built without Vulkan support")
|
|
endif()
|
|
set(_vulkan_ok TRUE)
|
|
else()
|
|
set(_vulkan_ok FALSE)
|
|
endif()
|
|
if(_vulkan_ok)
|
|
target_sources(vrdashboard_core PRIVATE
|
|
render/VulkanRenderBackend.h render/VulkanRenderBackend.cpp)
|
|
# Headers only: Qt loads libvulkan at runtime, nothing links against it.
|
|
target_link_libraries(vrdashboard_core PUBLIC Vulkan::Headers)
|
|
target_compile_definitions(vrdashboard_core PUBLIC VRDASH_HAS_VULKAN=1)
|
|
else()
|
|
target_compile_definitions(vrdashboard_core PUBLIC VRDASH_HAS_VULKAN=0)
|
|
endif()
|
|
message(STATUS "Vulkan backend: ${_vulkan_ok}")
|
|
|
|
# The app's own logic (no SteamVR, no rendering): linked by the app and its tests.
|
|
qt_add_library(frameassistant_lib STATIC
|
|
config/Config.h config/Config.cpp
|
|
)
|
|
target_include_directories(frameassistant_lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
|
|
target_link_libraries(frameassistant_lib PUBLIC Qt6::Core)
|
|
target_compile_options(frameassistant_lib PRIVATE -Wall -Wextra)
|
|
|
|
# The app: its UI is the QML module "FrameAssistant" (src/qml/).
|
|
vrdash_add_dashboard(frameassistant
|
|
OUTPUT_NAME ${VRDASH_EXECUTABLE_NAME}
|
|
QML_URI FrameAssistant
|
|
SOURCES main.cpp Dashboard.h Dashboard.cpp
|
|
QML_FILES
|
|
qml/Main.qml
|
|
qml/Card.qml)
|
|
target_link_libraries(frameassistant PRIVATE frameassistant_lib)
|
|
|
|
install(FILES ${OPENVR_LIBRARY} DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
|
|
|
# Licenses: ours, the overview of third-party components, OpenVR's.
|
|
install(FILES ${PROJECT_SOURCE_DIR}/LICENSE ${PROJECT_SOURCE_DIR}/THIRD_PARTY_NOTICES.md
|
|
DESTINATION ${CMAKE_INSTALL_DOCDIR})
|
|
if(EXISTS ${OPENVR_LICENSE})
|
|
install(FILES ${OPENVR_LICENSE} DESTINATION ${CMAKE_INSTALL_DOCDIR}/third-party
|
|
RENAME openvr.LICENSE)
|
|
endif()
|