CMakeLists.txt 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  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. find_package(Qt5Network ${FIND_MODE})
  25. if(NOT Qt5Widgets_FOUND OR NOT Qt5Network_FOUND)
  26. if (ENABLE_UI)
  27. message(FATAL_ERROR "Failed to find Qt5")
  28. else()
  29. message(STATUS "Qt5 not found - UI disabled")
  30. return()
  31. endif()
  32. endif()
  33. include_directories(SYSTEM "${CMAKE_SOURCE_DIR}/libobs")
  34. if(WIN32)
  35. set(obs_PLATFORM_SOURCES
  36. platform-windows.cpp)
  37. elseif(APPLE)
  38. set(obs_PLATFORM_SOURCES
  39. platform-osx.mm)
  40. find_package(AppKit REQUIRED)
  41. set(obs_PLATFORM_LIBRARIES ${APPKIT_LIBRARIES})
  42. add_definitions(-fobjc-arc)
  43. option(ENABLE_SPARKLE_UPDATER "Enables updates via the Sparkle framework (don't forget to update the Info.plist for your .app)" OFF)
  44. if(ENABLE_SPARKLE_UPDATER)
  45. find_library(SPARKLE Sparkle)
  46. include_directories(${SPARKLE})
  47. set(obs_PLATFORM_SOURCES
  48. ${obs_PLATFORM_SOURCES}
  49. sparkle-updater.mm)
  50. set(obs_PLATFORM_LIBRARIES
  51. ${obs_PLATFORM_LIBRARIES}
  52. ${SPARKLE})
  53. add_definitions(-DUPDATE_SPARKLE=1)
  54. endif()
  55. elseif(UNIX)
  56. find_package(Qt5X11Extras REQUIRED)
  57. set(obs_PLATFORM_SOURCES
  58. platform-x11.cpp)
  59. find_package(XCB COMPONENTS XCB REQUIRED RANDR REQUIRED XINERAMA REQUIRED)
  60. include_directories(
  61. ${XCB_INCLUDE_DIRS}
  62. ${X11_XCB_INCLUDE_DIRS})
  63. add_definitions(
  64. ${XCB_DEFINITIONS}
  65. ${X11_XCB_DEFINITIONS})
  66. set(obs_PLATFORM_LIBRARIES
  67. ${XCB_LIBRARIES}
  68. ${X11_XCB_LIBRARIES}
  69. Qt5::X11Extras)
  70. endif()
  71. set(obs_SOURCES
  72. ${obs_PLATFORM_SOURCES}
  73. obs-app.cpp
  74. window-basic-main.cpp
  75. window-basic-settings.cpp
  76. window-basic-interaction.cpp
  77. window-basic-properties.cpp
  78. window-basic-main-outputs.cpp
  79. window-basic-source-select.cpp
  80. window-license-agreement.cpp
  81. window-basic-status-bar.cpp
  82. window-basic-adv-audio.cpp
  83. window-basic-transform.cpp
  84. window-basic-preview.cpp
  85. window-namedialog.cpp
  86. window-log-reply.cpp
  87. window-remux.cpp
  88. properties-view.cpp
  89. volume-control.cpp
  90. adv-audio-control.cpp
  91. vertical-scroll-area.cpp
  92. source-list-widget.cpp
  93. crash-report.cpp
  94. qt-wrappers.cpp)
  95. set(obs_HEADERS
  96. obs-app.hpp
  97. platform.hpp
  98. window-main.hpp
  99. window-basic-main.hpp
  100. window-basic-settings.hpp
  101. window-basic-interaction.hpp
  102. window-basic-properties.hpp
  103. window-basic-main-outputs.hpp
  104. window-basic-source-select.hpp
  105. window-license-agreement.hpp
  106. window-basic-status-bar.hpp
  107. window-basic-adv-audio.hpp
  108. window-basic-transform.hpp
  109. window-basic-preview.hpp
  110. window-namedialog.hpp
  111. window-log-reply.hpp
  112. window-remux.hpp
  113. properties-view.hpp
  114. display-helpers.hpp
  115. volume-control.hpp
  116. adv-audio-control.hpp
  117. vertical-scroll-area.hpp
  118. source-list-widget.hpp
  119. qt-display.hpp
  120. crash-report.hpp
  121. qt-wrappers.hpp)
  122. set(obs_UI
  123. forms/NameDialog.ui
  124. forms/OBSLicenseAgreement.ui
  125. forms/OBSLogReply.ui
  126. forms/OBSBasic.ui
  127. forms/OBSBasicTransform.ui
  128. forms/OBSBasicSettings.ui
  129. forms/OBSBasicSourceSelect.ui
  130. forms/OBSBasicInteraction.ui
  131. forms/OBSBasicProperties.ui
  132. forms/OBSRemux.ui)
  133. set(obs_QRC
  134. forms/obs.qrc)
  135. qt5_wrap_ui(obs_UI_HEADERS ${obs_UI})
  136. qt5_add_resources(obs_QRC_SOURCES ${obs_QRC})
  137. add_executable(obs WIN32
  138. ${obs_SOURCES}
  139. ${obs_HEADERS}
  140. ${obs_UI_HEADERS}
  141. ${obs_QRC_SOURCES})
  142. if(WIN32)
  143. if(CMAKE_SIZEOF_VOID_P EQUAL 8)
  144. set(_output_suffix "64")
  145. else()
  146. set(_output_suffix "32")
  147. endif()
  148. set_target_properties(obs
  149. PROPERTIES
  150. OUTPUT_NAME "obs${_output_suffix}")
  151. endif()
  152. target_link_libraries(obs
  153. libobs
  154. Qt5::Widgets
  155. Qt5::Network
  156. ${obs_PLATFORM_LIBRARIES})
  157. define_graphic_modules(obs)
  158. install_obs_core(obs)
  159. install_obs_data(obs data obs-studio)
  160. if (UNIX AND UNIX_STRUCTURE AND NOT APPLE)
  161. install(FILES dist/obs.desktop DESTINATION share/applications)
  162. install(FILES forms/images/obs.png
  163. DESTINATION share/icons/hicolor/256x256/apps)
  164. endif()