CMakeLists.txt 4.8 KB

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