| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- cmake_minimum_required(VERSION 3.22...3.25)
- if(CMAKE_HOST_SYSTEM_NAME MATCHES "(Darwin)" OR OBS_CMAKE_VERSION VERSION_GREATER_EQUAL 3.0.0)
- include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/common/bootstrap.cmake" NO_POLICY_SCOPE)
- project(obs-studio VERSION ${OBS_VERSION_CANONICAL})
- if(CMAKE_HOST_SYSTEM_NAME MATCHES "Windows")
- include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/windows/architecture.cmake")
- if(NOT OBS_PARENT_ARCHITECTURE STREQUAL CMAKE_GENERATOR_PLATFORM)
- return()
- endif()
- endif()
- include(compilerconfig)
- include(defaults)
- include(helpers)
- option(ENABLE_UI "Enable building with UI (requires Qt)" ON)
- option(ENABLE_SCRIPTING "Enable scripting support" ON)
- option(ENABLE_HEVC "Enable HEVC encoders" ON)
- add_subdirectory(libobs)
- if(OS_WINDOWS)
- add_subdirectory(libobs-d3d11)
- add_subdirectory(libobs-winrt)
- endif()
- add_subdirectory(libobs-opengl)
- add_subdirectory(plugins)
- add_subdirectory(test/test-input)
- add_subdirectory(UI)
- message_configuration()
- return()
- endif()
- message(
- DEPRECATION
- "\n"
- "============ LEGACY BUILD SYSTEM IS DEPRECATED ============"
- "\n"
- "You are using the legacy build system to build OBS Studio. "
- "The legacy build system is unsupported and will be removed in the near future."
- "\n"
- "To migrate to the new build system, familiarize yourself with CMake presets "
- "(https://cmake.org/cmake/help/latest/manual/cmake-presets.7.html) and create "
- "a user preset with your customized build settings, inheriting from one of the default presets."
- "\n"
- "============ LEGACY BUILD SYSTEM IS DEPRECATED ============"
- )
- list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake/Modules")
- include(VersionConfig)
- # Prohibit in-source builds
- if("${CMAKE_BINARY_DIR}" STREQUAL "${CMAKE_SOURCE_DIR}")
- message(
- FATAL_ERROR
- "OBS: You cannot build in a source directory (or any directory with CMakeLists.txt file). "
- "Please make a build subdirectory. Feel free to remove CMakeCache.txt and CMakeFiles."
- )
- endif()
- project(obs-studio VERSION ${OBS_VERSION_CANONICAL})
- set_property(GLOBAL PROPERTY USE_FOLDERS ON)
- # Use target folders for MSVC/Xcode/etc.
- include(DeprecationHelpers)
- include(ObsHelpers)
- # Set default compiler flags
- include(CompilerConfig)
- # Allow selection of common build types via UI
- if(NOT CMAKE_BUILD_TYPE)
- set(
- CMAKE_BUILD_TYPE
- "RelWithDebInfo"
- CACHE STRING
- "OBS build type [Release, RelWithDebInfo, Debug, MinSizeRel]"
- FORCE
- )
- set_property(
- CACHE CMAKE_BUILD_TYPE
- PROPERTY STRINGS Release RelWithDebInfo Debug MinSizeRel
- )
- endif()
- # Global project options
- option(ENABLE_HEVC "Enable HEVC encoders" ON)
- if(ENABLE_HEVC)
- add_compile_definitions(ENABLE_HEVC)
- endif()
- option(BUILD_FOR_DISTRIBUTION "Build for distribution (enables optimizations)" OFF)
- option(ENABLE_UI "Enable building with UI (requires Qt)" ON)
- option(ENABLE_SCRIPTING "Enable scripting support" ON)
- option(USE_LIBCXX "Use libc++ instead of libstdc++" ${APPLE})
- option(BUILD_TESTS "Build test directory (includes test sources and possibly a platform test executable)" OFF)
- if(OS_WINDOWS)
- option(
- INSTALLER_RUN
- "Build a multiarch installer (needs to run independently after both archs have compiled) (Windows)"
- OFF
- )
- elseif(OS_POSIX)
- option(LINUX_PORTABLE "Build portable version (Linux)" OFF)
- option(USE_XDG "Utilize XDG Base Directory Specification (Linux)" ON)
- option(ENABLE_PULSEAUDIO "Enable PulseAudio support" ON)
- if(OS_LINUX)
- option(ENABLE_WAYLAND "Enable building with support for Wayland (Linux)" ON)
- option(BUILD_FOR_PPA "Build for PPA distribution" OFF)
- endif()
- endif()
- setup_obs_project()
- mark_as_advanced(BUILD_TESTS USE_LIBCXX)
- if(INSTALLER_RUN)
- generate_multiarch_installer()
- return()
- endif()
- # OBS sources and plugins
- add_subdirectory(deps)
- add_subdirectory(libobs-opengl)
- if(OS_WINDOWS)
- add_subdirectory(libobs-d3d11)
- add_subdirectory(libobs-winrt)
- endif()
- add_subdirectory(libobs)
- add_subdirectory(plugins)
- # OBS main app
- add_subdirectory(UI)
- # Tests
- if(ENABLE_UNIT_TESTS)
- enable_testing()
- endif()
- if(BUILD_TESTS OR ENABLE_UNIT_TESTS)
- add_subdirectory(test)
- endif()
|