Files
OpenVR-AdvancedSettings-frame/CMakeLists.txt
T
ykearaandRTUnreal ca0ec3e07d Qt6 (#669)
* update qt6 upgrade progress

* add flawed addition for QRenderTarget and link needed libs

* update to better logging format

* move many assets and qml files into qrc

* get rid of deprecation messages

* remove additional deprecation notices

* make Qt6 finally render on desktop with some progress on vr

* initialize QRhi with QQuickRenderControl

* use default values to stop SegFaults

* fix compilation on windows

* add windows files for aiding in running exe

* fix formatting of testing qt.conf

* first attempt on using textures instead of files in AudioTabController

* Fix public/private access issue

---------

Co-authored-by: RTUnreal <unreal@rtinf.net>
2024-04-03 22:49:24 -05:00

405 lines
12 KiB
CMake

cmake_minimum_required(VERSION 3.20)
project(AdvancedSettings VERSION 5.7.4 LANGUAGES CXX)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(QT NAMES Qt6 REQUIRED COMPONENTS Core)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Gui Multimedia Qml Quick WebSockets Widgets QuickControls2 QuickDialogs2 Svg)
find_package(Qt${QT_VERSION_MAJOR} OPTIONAL_COMPONENTS DBus)
qt_standard_project_setup()
if(QT_KNOWN_POLICY_QTP0001)
qt_policy(SET QTP0001 NEW)
endif()
# ability to just put .qrc files into the source list
set(CMAKE_AUTORCC ON)
set(SRCS
src/alarm_clock/vr_alarm.cpp
src/keyboard_input/input_parser.cpp
src/keyboard_input/keyboard_input.cpp
src/main.cpp
src/openvr/ivrinput.cpp
src/openvr/lh_console_util.cpp
src/openvr/openvr_init.cpp
src/openvr/ovr_application_wrapper.cpp
src/openvr/ovr_overlay_wrapper.cpp
src/openvr/ovr_settings_wrapper.cpp
src/openvr/ovr_system_wrapper.cpp
src/overlaycontroller.cpp
src/settings/settings.cpp
src/settings/settings_object.cpp
src/tabcontrollers/AudioTabController.cpp
src/tabcontrollers/ChaperoneTabController.cpp
src/tabcontrollers/FixFloorTabController.cpp
src/tabcontrollers/MoveCenterTabController.cpp
src/tabcontrollers/RotationTabController.cpp
src/tabcontrollers/SettingsTabController.cpp
src/tabcontrollers/StatisticsTabController.cpp
src/tabcontrollers/SteamVRTabController.cpp
src/tabcontrollers/UtilitiesTabController.cpp
src/tabcontrollers/VideoTabController.cpp
src/utils/ChaperoneUtils.cpp
src/utils/FrameRateUtils.cpp
src/utils/paths.cpp
src/utils/setup.cpp
src/utils/update_rate.cpp
)
set(QML_FILES
src/res/qml/utilities_page/keyboard_utils/KeyboardGroupBox.qml
src/res/qml/utilities_page/media_keys/MediaControllerKeys.qml
src/res/qml/utilities_page/media_keys/MediaButton.qml
src/res/qml/utilities_page/misc/MiscBox.qml
src/res/qml/utilities_page/alarm_clock/AlarmGroupBox.qml
src/res/qml/utilities_page/UtilitiesPage.qml
src/res/qml/motion_page/space_drag/SpaceDragGroupBox.qml
src/res/qml/motion_page/height_toggle/HeightToggleGroupBox.qml
src/res/qml/motion_page/gravity/GravityGroupBox.qml
src/res/qml/motion_page/MotionPage.qml
src/res/qml/PlayspacePage.qml
src/res/qml/SettingsPage.qml
src/res/qml/ChaperoneWarningsPage.qml
src/res/qml/chaperone_page/ChaperonePage.qml
src/res/qml/chaperone_page/change_orientation/ChangeOrientationGroupBox.qml
src/res/qml/chaperone_page/chaperone_additional/ChaperoneAdditionalPage.qml
src/res/qml/chaperone_page/chaperone_additional/chaperonemisc/ChaperoneMiscGroupBox.qml
src/res/qml/chaperone_page/chaperone_additional/chaperonetype/ChaperoneTypeGroupBox.qml
src/res/qml/chaperone_page/chaperone_additional/chaperoneboundscolor/ChaperoneBoundsColorGroupBox.qml
src/res/qml/RootPage.qml
src/res/qml/steamvr_page/steamvrmisc/SteamVRMiscGroupBox.qml
src/res/qml/steamvr_page/SteamVRPage.qml
src/res/qml/steamvr_page/camera/CameraGroupBox.qml
src/res/qml/steamvr_page/steamvr_additional/SteamVRTXRXPage.qml
src/res/qml/steamvr_page/steamvrbind/SteamVRBindGroupBox.qml
src/res/qml/audio_page/device_selector/MicDeviceSelector.qml
src/res/qml/audio_page/device_selector/AudioDeviceSelector.qml
src/res/qml/audio_page/device_selector/MirrorDeviceSelector.qml
src/res/qml/audio_page/device_selector/MirrorVolumeSlider.qml
src/res/qml/audio_page/device_selector/MicVolumeSlider.qml
src/res/qml/audio_page/dialog_boxes/AudioDeleteProfileDialog.qml
src/res/qml/audio_page/dialog_boxes/AudioNewProfileDialog.qml
src/res/qml/audio_page/dialog_boxes/AudioMessageDialog.qml
src/res/qml/audio_page/proximity/ProximityToggle.qml
src/res/qml/audio_page/profiles/ProfileButtons.qml
src/res/qml/audio_page/AudioPage.qml
src/res/qml/audio_page/push_to_talk/PttButtons.qml
src/res/qml/FixFloorPage.qml
src/res/qml/common/MySlider.qml
src/res/qml/common/MyResources.qml
src/res/qml/common/MyPushButton.qml
src/res/qml/common/HourComboBox.qml
src/res/qml/common/MyText.qml
src/res/qml/common/MyToggleButton.qml
src/res/qml/common/MinuteSecondComboBox.qml
src/res/qml/common/MyComboBox.qml
src/res/qml/common/MyTextField.qml
src/res/qml/common/TimeAssembly.qml
src/res/qml/common/MyDialogOkPopup.qml
src/res/qml/common/mainwidget.qml
src/res/qml/common/LineSeparator.qml
src/res/qml/common/MyPushButton2.qml
src/res/qml/common/MyStackViewPage.qml
src/res/qml/common/MyRadioButton.qml
src/res/qml/common/FullWidthSliderBox.qml
src/res/qml/common/MyDialogOkCancelPopup.qml
src/res/qml/rotation_page/view_ratchet/ViewRatchetGroupBox.qml
src/res/qml/rotation_page/redirected/RedirectedGroupBox.qml
src/res/qml/rotation_page/redirected/AutoTurnGroupBox.qml
src/res/qml/rotation_page/snap_turn/SnapTurnGroupBox.qml
src/res/qml/rotation_page/space_turn/SpaceTurnGroupBox.qml
src/res/qml/rotation_page/RotationPage.qml
src/res/qml/video_page/brightness/BrightnessGroupBox.qml
src/res/qml/video_page/profiles/VideoProfileGroupBox.qml
src/res/qml/video_page/overlaycolorbright/OverlayMethodGroupBox.qml
src/res/qml/video_page/miscvid/VideoMiscGroupBox.qml
src/res/qml/video_page/supersampling/SuperSamplingGroupBox.qml
src/res/qml/video_page/color/ColorGroupBox.qml
src/res/qml/video_page/VideoPage.qml
src/res/qml/video_page/dialogboxes/VideoNewProfileDialog.qml
src/res/qml/video_page/dialogboxes/VideoMessageDialog.qml
src/res/qml/video_page/dialogboxes/VideoDeleteProfileDialog.qml
src/res/qml/StatisticsPage.qml
)
set(RESOURCES src/res/resources.qrc)
# make alias path relative to src/res/qml
foreach(qml_file ${QML_FILES})
cmake_path(RELATIVE_PATH qml_file BASE_DIRECTORY src/res/qml OUTPUT_VARIABLE qml_alias)
set_source_files_properties(${qml_file} PROPERTIES QT_RESOURCE_ALIAS ${qml_alias})
endforeach()
set_source_files_properties(src/res/qml/common/MyResources.qml PROPERTIES QT_QML_SINGLETON_TYPE TRUE)
qt_add_executable(AdvancedSettings WIN32 MACOSX_BUNDLE ${SRCS} ${RESOURCES})
target_include_directories(AdvancedSettings PUBLIC
src
third-party/nlohmann
third-party/openvr/headers)
# Avoid collision between executable name and QML module directory (QTBUG-98568).
if(NOT WIN32 AND NOT APPLE)
set_property(TARGET AdvancedSettings PROPERTY OUTPUT_NAME AdvancedSettings_app)
endif()
target_compile_definitions(AdvancedSettings PRIVATE
APPLICATION_VERSION=\"${PROJECT_VERSION}\"
)
find_library(OPENVR_LIBRARIES
NAMES
openvr_api
PATHS
${CMAKE_CURRENT_SOURCE_DIR}/third-party/openvr/bin
${CMAKE_CURRENT_SOURCE_DIR}/third-party/openvr/lib
PATH_SUFFIXES
linux64
win64
NO_DEFAULT_PATH
NO_CMAKE_FIND_ROOT_PATH)
target_link_libraries(AdvancedSettings PRIVATE
Qt::Core
Qt::Gui
# For QRhi
Qt::GuiPrivate
Qt::Multimedia
Qt::Qml
Qt::Quick
Qt::WebSockets
Qt::Widgets
Qt::QuickControls2
Qt::QuickDialogs2
Qt::Svg
${OPENVR_LIBRARIES}
)
qt_add_qml_module(AdvancedSettings
URI AdvancedSettings
VERSION ${PROJECT_VERSION}
QML_FILES ${QML_FILES}
)
if(GCC)
target_compile_options(AdvancedSettings
-Wcast-align
-Wconversion
-Wdouble-promotion
-Wduplicated-branches
-Wduplicated-cond
-Wextra
-Wformat=2
-Wlogical-op
-Wno-sign-conversion
-Wnon-virtual-dtor
-Wnull-dereference
-Wold-style-cast
-Woverloaded-virtual
-Wpedantic
-Wrestrict
-Wshadow
-Wunused
-Wzero-as-null-pointer-constant
-flto
)
if(warnings_as_errors)
target_compile_options(AdvancedSettings
-Werror
)
endif()
endif()
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
target_compile_options(AdvancedSettings
--system-header-prefix=qt
--system-header-prefix=third-party
-Wcast-align
-Wconversion
-Wdouble-promotion
-Wextra
-Wextra-semi
-Wformat=2
-Wmissing-variable-declarations
-Wmost
-Wno-sign-conversion
-Wnon-virtual-dtor
-Wold-style-cast
-Woverloaded-virtual
-Wpedantic
-Wshadow
-Wunused
-Wzero-as-null-pointer-constant
-flto
)
if(warnings_as_errors)
target_compile_options(AdvancedSettings
-Werror
)
endif()
endif()
if(debugSymbolsAndLogs)
target_compile_definitions(AdvancedSettings PRIVATE
ENABLE_DEBUG_LOGGING
)
endif()
if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
cmake_path(GET QT_DIR PARENT_PATH QT_ROOT)
cmake_path(GET QT_ROOT PARENT_PATH QT_ROOT)
cmake_path(GET QT_ROOT PARENT_PATH QT_ROOT)
cmake_path(NATIVE_PATH QT_ROOT NORMALIZE NATIVE_QT_ROOT)
cmake_path(NATIVE_PATH QT_DIR NORMALIZE NATIVE_QT_DIR)
cmake_path(NATIVE_PATH PROJECT_SOURCE_DIR NORMALIZE NATIVE_PROJECT_SOURCE_DIR)
# Needs to be executed: Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process
configure_file(build_scripts/win/env.ps1.in env.ps1)
configure_file(build_scripts/win/env.sh.in env.sh @ONLY)
# Adds default qt plugins path
configure_file(build_scripts/win/qt.conf.in qt.conf ESCAPE_QUOTES)
target_sources(AdvancedSettings PUBLIC
src/keyboard_input/input_sender_win.cpp
src/media_keys/media_keys_win.cpp
src/tabcontrollers/audiomanager/AudioManagerWindows.cpp
)
target_link_libraries(AdvancedSettings PRIVATE
ole32
user32
)
target_include_directories(AdvancedSettings PUBLIC third-party/policyconfig)
target_compile_definitions(AdvancedSettings PRIVATE
_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING
)
if(MSVC)
target_compile_options(AdvancedSettings PUBLIC
/Gw
/W4
/permissive-
/w14254
/w14263
/w14265
/w14287
/w14296
/w14311
/w14545
/w14546
/w14547
/w14549
/w14555
/w14640
/w14826
/w14905
/w14906
/w14928
/wd4127
/we4289
)
if(warnings_as_errors)
target_compile_options(AdvancedSettings
/WX
)
endif()
elseif(win32-clang-msvc)
target_compile_options(AdvancedSettings
-Wcast-align
-Wdouble-promotion
-Wextra
-Wformat=2
-Wmissing-variable-declarations
-Wmost
-Wnon-virtual-dtor
-Wold-style-cast
-Woverloaded-virtual
-Wshadow
-Wunused
-flto
/Gw
/W4
/imsvc /imsvc /imsvc
/w14254
/w14263
/w14265
/w14287
/w14296
/w14311
/w14545
/w14546
/w14547
/w14549
/w14555
/w14640
/w14826
/w14905
/w14906
/w14928
/wd4127
/we4289
)
endif()
elseif(UNIX AND NOT MACOS)
if(noX11)
target_sources(AdvancedSettings PUBLIC
src/keyboard_input/input_sender_dummy.cpp
)
else()
target_sources(AdvancedSettings PUBLIC
src/keyboard_input/input_sender_X11.cpp
)
target_link_libraries(AdvancedSettings PRIVATE
Xtst
X11
)
endif()
if(noDBUS)
target_sources(AdvancedSettings PUBLIC
src/media_keys/media_keys_dummy.cpp
)
else()
target_sources(AdvancedSettings PUBLIC
src/media_keys/media_keys_dbus.cpp
)
target_link_libraries(AdvancedSettings PRIVATE
Qt::DBus
)
endif()
if(noPulse)
target_sources(AdvancedSettings PUBLIC
src/tabcontrollers/audiomanager/AudioManagerDummy.cpp
)
else()
target_sources(AdvancedSettings PUBLIC
src/tabcontrollers/audiomanager/AudioManagerPulse.cpp
)
target_link_libraries(AdvancedSettings PRIVATE
pulse
)
endif()
elseif(MACOS)
target_sources(AdvancedSettings PUBLIC
src/keyboard_input/input_sender_dummy.cpp
src/media_keys/media_keys_dummy.cpp
src/tabcontrollers/audiomanager/AudioManagerDummy.cpp
)
endif()