mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-09-20 13:08:50 +02:00
2f8ea190b2
Since Ubuntu 22.04 is now our minimum supported Ubuntu version, and it has CMake 3.22, let's make CMake 3.22 the minimum CMake version.
115 lines
3.1 KiB
CMake
115 lines
3.1 KiB
CMake
cmake_minimum_required(VERSION 3.22...3.25)
|
|
|
|
legacy_check()
|
|
|
|
add_subdirectory(obs-frontend-api)
|
|
|
|
option(ENABLE_UI "Enable building with UI (requires Qt)" ON)
|
|
|
|
if(NOT ENABLE_UI)
|
|
target_disable_feature(obs "User Interface")
|
|
return()
|
|
else()
|
|
target_enable_feature(obs "User Interface")
|
|
endif()
|
|
|
|
find_package(FFmpeg REQUIRED COMPONENTS avcodec avutil avformat)
|
|
find_package(CURL REQUIRED)
|
|
|
|
if(NOT TARGET OBS::json11)
|
|
add_subdirectory("${CMAKE_SOURCE_DIR}/deps/json11" "${CMAKE_BINARY_DIR}/deps/json11")
|
|
endif()
|
|
|
|
add_executable(obs-studio)
|
|
add_executable(OBS::studio ALIAS obs-studio)
|
|
|
|
target_link_libraries(
|
|
obs-studio
|
|
PRIVATE CURL::libcurl
|
|
FFmpeg::avcodec
|
|
FFmpeg::avutil
|
|
FFmpeg::avformat
|
|
OBS::libobs
|
|
OBS::frontend-api
|
|
OBS::json11)
|
|
|
|
include(cmake/ui-qt.cmake)
|
|
include(cmake/ui-elements.cmake)
|
|
include(cmake/ui-windows.cmake)
|
|
include(cmake/feature-importers.cmake)
|
|
include(cmake/feature-browserpanels.cmake)
|
|
|
|
if(NOT OAUTH_BASE_URL)
|
|
# cmake-format: off
|
|
set(OAUTH_BASE_URL "https://auth.obsproject.com/" CACHE STRING "Default OAuth base URL")
|
|
mark_as_advanced(OAUTH_BASE_URL)
|
|
# cmake-format: on
|
|
endif()
|
|
include(cmake/feature-twitch.cmake)
|
|
include(cmake/feature-restream.cmake)
|
|
include(cmake/feature-youtube.cmake)
|
|
include(cmake/feature-sparkle.cmake)
|
|
include(cmake/feature-whatsnew.cmake)
|
|
|
|
add_subdirectory(frontend-plugins)
|
|
|
|
configure_file(ui-config.h.in ui-config.h)
|
|
|
|
target_sources(
|
|
obs-studio
|
|
PRIVATE # cmake-format: sortable
|
|
api-interface.cpp
|
|
auth-base.cpp
|
|
auth-base.hpp
|
|
auth-listener.cpp
|
|
auth-listener.hpp
|
|
auth-oauth.cpp
|
|
auth-oauth.hpp
|
|
display-helpers.hpp
|
|
ffmpeg-utils.cpp
|
|
ffmpeg-utils.hpp
|
|
multiview.cpp
|
|
multiview.hpp
|
|
obf.c
|
|
obf.h
|
|
obs-app.cpp
|
|
obs-app.hpp
|
|
obs-proxy-style.cpp
|
|
obs-proxy-style.hpp
|
|
platform.hpp
|
|
qt-display.cpp
|
|
qt-display.hpp
|
|
qt-wrappers.cpp
|
|
qt-wrappers.hpp
|
|
ui-config.h
|
|
ui-validation.cpp
|
|
ui-validation.hpp)
|
|
|
|
if(OS_WINDOWS)
|
|
include(cmake/os-windows.cmake)
|
|
elseif(OS_MACOS)
|
|
include(cmake/os-macos.cmake)
|
|
elseif(OS_LINUX)
|
|
include(cmake/os-linux.cmake)
|
|
elseif(OS_FREEBSD)
|
|
include(cmake/os-freebsd.cmake)
|
|
endif()
|
|
|
|
foreach(graphics_library IN ITEMS opengl metal d3d11)
|
|
string(TOUPPER ${graphics_library} graphics_library_U)
|
|
if(TARGET OBS::libobs-${graphics_library})
|
|
target_compile_definitions(obs-studio
|
|
PRIVATE DL_${graphics_library_U}="$<TARGET_FILE_NAME:OBS::libobs-${graphics_library}>")
|
|
else()
|
|
target_compile_definitions(obs-studio PRIVATE DL_${graphics_library_U}="")
|
|
endif()
|
|
endforeach()
|
|
|
|
get_property(obs_module_list GLOBAL PROPERTY OBS_MODULES_ENABLED)
|
|
list(JOIN obs_module_list "|" SAFE_MODULES)
|
|
target_compile_definitions(obs-studio PRIVATE "SAFE_MODULES=\"${SAFE_MODULES}\"")
|
|
|
|
# cmake-format: off
|
|
set_target_properties_obs(obs-studio PROPERTIES FOLDER frontend OUTPUT_NAME "$<IF:$<PLATFORM_ID:Windows>,obs64,obs>")
|
|
# cmake-format: on
|