CMakeLists.txt 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. option(ENABLE_UI "Enables the OBS user interfaces" ON)
  2. if(DISABLE_UI)
  3. message(STATUS "UI disabled")
  4. return()
  5. elseif(ENABLE_UI)
  6. set(FIND_MODE REQUIRED)
  7. else()
  8. set(FIND_MODE QUIET)
  9. endif()
  10. add_subdirectory(obs-frontend-api)
  11. # ----------------------------------------------------------------------------
  12. project(obs)
  13. if(DEFINED QTDIR${_lib_suffix})
  14. list(APPEND CMAKE_PREFIX_PATH "${QTDIR${_lib_suffix}}")
  15. elseif(DEFINED QTDIR)
  16. list(APPEND CMAKE_PREFIX_PATH "${QTDIR}")
  17. elseif(DEFINED ENV{QTDIR${_lib_suffix}})
  18. list(APPEND CMAKE_PREFIX_PATH "$ENV{QTDIR${_lib_suffix}}")
  19. elseif(DEFINED ENV{QTDIR})
  20. list(APPEND CMAKE_PREFIX_PATH "$ENV{QTDIR}")
  21. endif()
  22. set(CMAKE_INCLUDE_CURRENT_DIR TRUE)
  23. set(CMAKE_AUTOMOC TRUE)
  24. if(CMAKE_SIZEOF_VOID_P EQUAL 8)
  25. set(_lib_suffix 64)
  26. else()
  27. set(_lib_suffix 32)
  28. endif()
  29. find_package(Qt5Widgets ${FIND_MODE})
  30. if(NOT Qt5Widgets_FOUND)
  31. if (ENABLE_UI)
  32. message(FATAL_ERROR "Failed to find Qt5")
  33. else()
  34. message(STATUS "Qt5 not found - UI disabled")
  35. return()
  36. endif()
  37. endif()
  38. include_directories(SYSTEM "obs-frontend-api")
  39. include_directories(SYSTEM "${CMAKE_SOURCE_DIR}/libobs")
  40. find_package(Libcurl REQUIRED)
  41. include_directories(${LIBCURL_INCLUDE_DIRS})
  42. add_definitions(${LIBCURL_DEFINITIONS})
  43. if(WIN32)
  44. set(obs_PLATFORM_SOURCES
  45. platform-windows.cpp
  46. obs.rc)
  47. elseif(APPLE)
  48. set(obs_PLATFORM_SOURCES
  49. platform-osx.mm)
  50. find_package(AppKit REQUIRED)
  51. set(obs_PLATFORM_LIBRARIES ${APPKIT_LIBRARIES})
  52. add_definitions(-fobjc-arc)
  53. option(ENABLE_SPARKLE_UPDATER "Enables updates via the Sparkle framework (don't forget to update the Info.plist for your .app)" OFF)
  54. if(ENABLE_SPARKLE_UPDATER)
  55. find_library(SPARKLE Sparkle)
  56. include_directories(${SPARKLE})
  57. set(obs_PLATFORM_SOURCES
  58. ${obs_PLATFORM_SOURCES}
  59. sparkle-updater.mm)
  60. set(obs_PLATFORM_LIBRARIES
  61. ${obs_PLATFORM_LIBRARIES}
  62. ${SPARKLE})
  63. add_definitions(-DUPDATE_SPARKLE=1)
  64. endif()
  65. elseif(UNIX)
  66. find_package(Qt5X11Extras REQUIRED)
  67. set(obs_PLATFORM_SOURCES
  68. platform-x11.cpp)
  69. set(obs_PLATFORM_LIBRARIES
  70. Qt5::X11Extras)
  71. endif()
  72. set(obs_SOURCES
  73. ${obs_PLATFORM_SOURCES}
  74. obs-app.cpp
  75. api-interface.cpp
  76. window-basic-main.cpp
  77. window-basic-filters.cpp
  78. window-basic-settings.cpp
  79. window-basic-interaction.cpp
  80. window-basic-properties.cpp
  81. window-basic-main-outputs.cpp
  82. window-basic-source-select.cpp
  83. window-basic-main-scene-collections.cpp
  84. window-basic-main-transitions.cpp
  85. window-basic-main-dropfiles.cpp
  86. window-basic-main-profiles.cpp
  87. window-license-agreement.cpp
  88. window-basic-status-bar.cpp
  89. window-basic-adv-audio.cpp
  90. window-basic-transform.cpp
  91. window-basic-preview.cpp
  92. window-namedialog.cpp
  93. window-log-reply.cpp
  94. window-projector.cpp
  95. window-remux.cpp
  96. properties-view.cpp
  97. focus-list.cpp
  98. menu-button.cpp
  99. double-slider.cpp
  100. volume-control.cpp
  101. adv-audio-control.cpp
  102. item-widget-helpers.cpp
  103. visibility-checkbox.cpp
  104. vertical-scroll-area.cpp
  105. visibility-item-widget.cpp
  106. slider-absoluteset-style.cpp
  107. source-list-widget.cpp
  108. qt-display.cpp
  109. crash-report.cpp
  110. hotkey-edit.cpp
  111. source-label.cpp
  112. remote-text.cpp
  113. audio-encoders.cpp
  114. qt-wrappers.cpp)
  115. set(obs_HEADERS
  116. obs-app.hpp
  117. platform.hpp
  118. window-main.hpp
  119. window-basic-main.hpp
  120. window-basic-filters.hpp
  121. window-basic-settings.hpp
  122. window-basic-interaction.hpp
  123. window-basic-properties.hpp
  124. window-basic-main-outputs.hpp
  125. window-basic-source-select.hpp
  126. window-license-agreement.hpp
  127. window-basic-status-bar.hpp
  128. window-basic-adv-audio.hpp
  129. window-basic-transform.hpp
  130. window-basic-preview.hpp
  131. window-namedialog.hpp
  132. window-log-reply.hpp
  133. window-projector.hpp
  134. window-remux.hpp
  135. properties-view.hpp
  136. properties-view.moc.hpp
  137. display-helpers.hpp
  138. double-slider.hpp
  139. focus-list.hpp
  140. menu-button.hpp
  141. mute-checkbox.hpp
  142. volume-control.hpp
  143. adv-audio-control.hpp
  144. item-widget-helpers.hpp
  145. visibility-checkbox.hpp
  146. vertical-scroll-area.hpp
  147. visibility-item-widget.hpp
  148. slider-absoluteset-style.hpp
  149. source-list-widget.hpp
  150. qt-display.hpp
  151. crash-report.hpp
  152. hotkey-edit.hpp
  153. source-label.hpp
  154. remote-text.hpp
  155. audio-encoders.hpp
  156. qt-wrappers.hpp)
  157. set(obs_UI
  158. forms/NameDialog.ui
  159. forms/OBSLicenseAgreement.ui
  160. forms/OBSLogReply.ui
  161. forms/OBSBasic.ui
  162. forms/OBSBasicTransform.ui
  163. forms/OBSBasicFilters.ui
  164. forms/OBSBasicSettings.ui
  165. forms/OBSBasicSourceSelect.ui
  166. forms/OBSBasicInteraction.ui
  167. forms/OBSRemux.ui)
  168. set(obs_QRC
  169. forms/obs.qrc)
  170. qt5_wrap_ui(obs_UI_HEADERS ${obs_UI})
  171. qt5_add_resources(obs_QRC_SOURCES ${obs_QRC})
  172. add_executable(obs WIN32
  173. ${obs_SOURCES}
  174. ${obs_HEADERS}
  175. ${obs_UI_HEADERS}
  176. ${obs_QRC_SOURCES})
  177. if(WIN32)
  178. if(CMAKE_SIZEOF_VOID_P EQUAL 8)
  179. set(_output_suffix "64")
  180. else()
  181. set(_output_suffix "32")
  182. endif()
  183. set_target_properties(obs
  184. PROPERTIES
  185. OUTPUT_NAME "obs${_output_suffix}")
  186. endif()
  187. target_link_libraries(obs
  188. libobs
  189. libff
  190. Qt5::Widgets
  191. obs-frontend-api
  192. ${LIBCURL_LIBRARIES}
  193. ${obs_PLATFORM_LIBRARIES})
  194. define_graphic_modules(obs)
  195. install_obs_core(obs)
  196. install_obs_data(obs data obs-studio)
  197. if (UNIX AND UNIX_STRUCTURE AND NOT APPLE)
  198. install(FILES dist/obs.desktop DESTINATION ${CMAKE_INSTALL_FULL_DATAROOTDIR}/applications)
  199. install(FILES forms/images/obs.png
  200. DESTINATION ${CMAKE_INSTALL_FULL_DATAROOTDIR}/icons/hicolor/256x256/apps)
  201. endif()
  202. add_subdirectory(frontend-plugins)