CMakeLists.txt 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. cmake_minimum_required(VERSION 3.22...3.25)
  2. legacy_check()
  3. find_package(Qt6 REQUIRED Widgets)
  4. if(OS_LINUX
  5. OR OS_FREEBSD
  6. OR OS_OPENBSD)
  7. find_package(Qt6 REQUIRED Gui)
  8. find_package(X11 REQUIRED)
  9. endif()
  10. add_library(frontend-tools MODULE)
  11. add_library(OBS::frontend-tools ALIAS frontend-tools)
  12. if(NOT TARGET OBS::properties-view)
  13. add_subdirectory("${CMAKE_SOURCE_DIR}/shared/properties-view" "${CMAKE_BINARY_DIR}/shared/properties-view")
  14. endif()
  15. if(NOT TARGET OBS::qt-plain-text-edit)
  16. add_subdirectory("${CMAKE_SOURCE_DIR}/shared/qt/plain-text-edit" "${CMAKE_BINARY_DIR}/shared/qt/plain-text-edit")
  17. endif()
  18. if(NOT TARGET OBS::qt-wrappers)
  19. add_subdirectory("${CMAKE_SOURCE_DIR}/shared/qt/wrappers" "${CMAKE_BINARY_DIR}/shared/qt/wrappers")
  20. endif()
  21. target_sources(
  22. frontend-tools
  23. PRIVATE # cmake-format: sortable
  24. $<$<PLATFORM_ID:Darwin>:auto-scene-switcher-osx.mm>
  25. $<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:auto-scene-switcher-nix.cpp>
  26. $<$<PLATFORM_ID:Windows>:auto-scene-switcher-win.cpp>
  27. $<$<PLATFORM_ID:Windows>:captions-handler.cpp>
  28. $<$<PLATFORM_ID:Windows>:captions-handler.hpp>
  29. $<$<PLATFORM_ID:Windows>:captions-mssapi-stream.cpp>
  30. $<$<PLATFORM_ID:Windows>:captions-mssapi-stream.hpp>
  31. $<$<PLATFORM_ID:Windows>:captions-mssapi.cpp>
  32. $<$<PLATFORM_ID:Windows>:captions-mssapi.hpp>
  33. $<$<PLATFORM_ID:Windows>:captions.cpp>
  34. $<$<PLATFORM_ID:Windows>:captions.hpp>
  35. auto-scene-switcher.cpp
  36. auto-scene-switcher.hpp
  37. frontend-tools.c
  38. output-timer.cpp
  39. output-timer.hpp
  40. tool-helpers.hpp)
  41. target_sources(frontend-tools PRIVATE forms/auto-scene-switcher.ui forms/captions.ui forms/output-timer.ui
  42. forms/scripts.ui)
  43. target_compile_options(frontend-tools PRIVATE $<$<PLATFORM_ID:Darwin>:-Wno-quoted-include-in-framework-header>
  44. $<$<PLATFORM_ID:Darwin>:-Wno-comma>)
  45. target_link_libraries(
  46. frontend-tools
  47. PRIVATE OBS::frontend-api
  48. OBS::libobs
  49. OBS::properties-view
  50. OBS::qt-plain-text-edit
  51. OBS::qt-wrappers
  52. Qt::Widgets
  53. "$<$<PLATFORM_ID:Darwin>:$<LINK_LIBRARY:FRAMEWORK,Cocoa>>"
  54. $<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:X11::X11>
  55. $<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:Qt::GuiPrivate>)
  56. add_subdirectory("${CMAKE_SOURCE_DIR}/shared/obs-scripting" "${CMAKE_BINARY_DIR}/shared/obs-scripting")
  57. if(ENABLE_SCRIPTING AND TARGET OBS::scripting)
  58. target_sources(frontend-tools PRIVATE scripts.cpp scripts.hpp)
  59. target_link_libraries(frontend-tools PRIVATE OBS::scripting)
  60. target_enable_feature(frontend-tools "Scripting Support (Frontend)" ENABLE_SCRIPTING)
  61. endif()
  62. if(OS_WINDOWS)
  63. configure_file(cmake/windows/obs-module.rc.in frontend-tools.rc)
  64. target_sources(frontend-tools PRIVATE frontend-tools.rc)
  65. # cmake-format: off
  66. set_property(TARGET frontend-tools APPEND PROPERTY AUTORCC_OPTIONS --format-version 1)
  67. # cmake-format: on
  68. endif()
  69. # cmake-format: off
  70. set_target_properties_obs(
  71. frontend-tools
  72. PROPERTIES FOLDER frontend
  73. PREFIX ""
  74. AUTOMOC ON
  75. AUTOUIC ON
  76. AUTORCC ON
  77. AUTOUIC_SEARCH_PATHS forms
  78. XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES)
  79. # cmake-format: on