CMakeLists.txt 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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. target_sources(
  13. frontend-tools
  14. PRIVATE # cmake-format: sortable
  15. $<$<PLATFORM_ID:Darwin>:auto-scene-switcher-osx.mm>
  16. $<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:auto-scene-switcher-nix.cpp>
  17. $<$<PLATFORM_ID:Windows>:auto-scene-switcher-win.cpp>
  18. $<$<PLATFORM_ID:Windows>:captions-handler.cpp>
  19. $<$<PLATFORM_ID:Windows>:captions-handler.hpp>
  20. $<$<PLATFORM_ID:Windows>:captions-mssapi-stream.cpp>
  21. $<$<PLATFORM_ID:Windows>:captions-mssapi-stream.hpp>
  22. $<$<PLATFORM_ID:Windows>:captions-mssapi.cpp>
  23. $<$<PLATFORM_ID:Windows>:captions-mssapi.hpp>
  24. $<$<PLATFORM_ID:Windows>:captions.cpp>
  25. $<$<PLATFORM_ID:Windows>:captions.hpp>
  26. auto-scene-switcher.cpp
  27. auto-scene-switcher.hpp
  28. frontend-tools.c
  29. output-timer.cpp
  30. output-timer.hpp
  31. tool-helpers.hpp)
  32. target_sources(frontend-tools PRIVATE forms/auto-scene-switcher.ui forms/captions.ui forms/output-timer.ui
  33. forms/scripts.ui)
  34. target_compile_options(frontend-tools PRIVATE $<$<PLATFORM_ID:Darwin>:-Wno-quoted-include-in-framework-header>
  35. $<$<PLATFORM_ID:Darwin>:-Wno-comma>)
  36. target_link_libraries(
  37. frontend-tools
  38. PRIVATE OBS::frontend-api
  39. OBS::libobs
  40. OBS::ui-support
  41. Qt::Widgets
  42. "$<$<PLATFORM_ID:Darwin>:$<LINK_LIBRARY:FRAMEWORK,Cocoa>>"
  43. $<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:X11::X11>
  44. $<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:Qt::GuiPrivate>)
  45. add_subdirectory("${CMAKE_SOURCE_DIR}/deps/obs-scripting" "${CMAKE_BINARY_DIR}/deps/obs-scripting")
  46. if(ENABLE_SCRIPTING AND TARGET OBS::scripting)
  47. target_sources(frontend-tools PRIVATE scripts.cpp scripts.hpp)
  48. target_link_libraries(frontend-tools PRIVATE OBS::scripting)
  49. target_enable_feature(frontend-tools "Scripting Support (Frontend)" ENABLE_SCRIPTING)
  50. endif()
  51. if(OS_WINDOWS)
  52. configure_file(cmake/windows/obs-module.rc.in frontend-tools.rc)
  53. target_sources(frontend-tools PRIVATE frontend-tools.rc)
  54. # cmake-format: off
  55. set_property(TARGET frontend-tools APPEND PROPERTY AUTORCC_OPTIONS --format-version 1)
  56. # cmake-format: on
  57. endif()
  58. # cmake-format: off
  59. set_target_properties_obs(
  60. frontend-tools
  61. PROPERTIES FOLDER frontend
  62. PREFIX ""
  63. AUTOMOC ON
  64. AUTOUIC ON
  65. AUTORCC ON
  66. AUTOUIC_SEARCH_PATHS forms
  67. XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES)
  68. # cmake-format: on