CMakeLists.txt 5.0 KB

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