CMakeLists.txt 3.0 KB

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