mirror of
https://github.com/obsproject/obs-studio.git
synced 2026-07-16 18:24:56 -04:00
Frontend plugins should not require being placed in the frontend directory to be built successfully. Indeed they should only depend on libobs and the obs-frontend-api and thus their source tree should be able to exist anywhere (even standalone) and the plugin should still compile successfully (just like any 3rd party plugin). Thus moving those plugins into the main plugin directory ensures that they don't require on any "special sauce" within the source tree to compile.
94 lines
2.9 KiB
CMake
94 lines
2.9 KiB
CMake
cmake_minimum_required(VERSION 3.28...3.30)
|
|
|
|
find_package(Qt6 REQUIRED Widgets)
|
|
|
|
if(OS_LINUX OR OS_FREEBSD OR OS_OPENBSD)
|
|
find_package(X11 REQUIRED)
|
|
endif()
|
|
|
|
add_library(frontend-tools MODULE)
|
|
add_library(OBS::frontend-tools ALIAS frontend-tools)
|
|
|
|
if(NOT TARGET OBS::properties-view)
|
|
add_subdirectory("${CMAKE_SOURCE_DIR}/shared/properties-view" "${CMAKE_BINARY_DIR}/shared/properties-view")
|
|
endif()
|
|
|
|
if(NOT TARGET OBS::qt-plain-text-edit)
|
|
add_subdirectory("${CMAKE_SOURCE_DIR}/shared/qt/plain-text-edit" "${CMAKE_BINARY_DIR}/shared/qt/plain-text-edit")
|
|
endif()
|
|
|
|
if(NOT TARGET OBS::qt-wrappers)
|
|
add_subdirectory("${CMAKE_SOURCE_DIR}/shared/qt/wrappers" "${CMAKE_BINARY_DIR}/shared/qt/wrappers")
|
|
endif()
|
|
|
|
target_sources(
|
|
frontend-tools
|
|
PRIVATE
|
|
$<$<PLATFORM_ID:Darwin>:auto-scene-switcher-osx.mm>
|
|
$<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:auto-scene-switcher-nix.cpp>
|
|
$<$<PLATFORM_ID:Windows>:auto-scene-switcher-win.cpp>
|
|
$<$<PLATFORM_ID:Windows>:captions-handler.cpp>
|
|
$<$<PLATFORM_ID:Windows>:captions-handler.hpp>
|
|
$<$<PLATFORM_ID:Windows>:captions-mssapi-stream.cpp>
|
|
$<$<PLATFORM_ID:Windows>:captions-mssapi-stream.hpp>
|
|
$<$<PLATFORM_ID:Windows>:captions-mssapi.cpp>
|
|
$<$<PLATFORM_ID:Windows>:captions-mssapi.hpp>
|
|
$<$<PLATFORM_ID:Windows>:captions.cpp>
|
|
$<$<PLATFORM_ID:Windows>:captions.hpp>
|
|
auto-scene-switcher.cpp
|
|
auto-scene-switcher.hpp
|
|
frontend-tools.c
|
|
output-timer.cpp
|
|
output-timer.hpp
|
|
tool-helpers.hpp
|
|
)
|
|
|
|
target_sources(
|
|
frontend-tools
|
|
PRIVATE forms/auto-scene-switcher.ui forms/captions.ui forms/output-timer.ui forms/scripts.ui
|
|
)
|
|
|
|
target_compile_options(
|
|
frontend-tools
|
|
PRIVATE $<$<PLATFORM_ID:Darwin>:-Wno-quoted-include-in-framework-header> $<$<PLATFORM_ID:Darwin>:-Wno-comma>
|
|
)
|
|
|
|
target_link_libraries(
|
|
frontend-tools
|
|
PRIVATE
|
|
OBS::frontend-api
|
|
OBS::libobs
|
|
OBS::properties-view
|
|
OBS::qt-plain-text-edit
|
|
OBS::qt-wrappers
|
|
Qt::Widgets
|
|
"$<$<PLATFORM_ID:Darwin>:$<LINK_LIBRARY:FRAMEWORK,Cocoa>>"
|
|
$<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:X11::X11>
|
|
)
|
|
|
|
add_subdirectory("${CMAKE_SOURCE_DIR}/shared/obs-scripting" "${CMAKE_BINARY_DIR}/shared/obs-scripting")
|
|
|
|
if(ENABLE_SCRIPTING AND TARGET OBS::scripting)
|
|
target_sources(frontend-tools PRIVATE scripts.cpp scripts.hpp)
|
|
target_link_libraries(frontend-tools PRIVATE OBS::scripting)
|
|
target_enable_feature(frontend-tools "Scripting Support (Frontend)" ENABLE_SCRIPTING)
|
|
endif()
|
|
|
|
if(OS_WINDOWS)
|
|
configure_file(cmake/windows/obs-module.rc.in frontend-tools.rc)
|
|
target_sources(frontend-tools PRIVATE frontend-tools.rc)
|
|
|
|
set_property(TARGET frontend-tools APPEND PROPERTY AUTORCC_OPTIONS --format-version 1)
|
|
endif()
|
|
|
|
set_target_properties_obs(
|
|
frontend-tools
|
|
PROPERTIES FOLDER plugins/frontend-tools
|
|
PREFIX ""
|
|
AUTOMOC ON
|
|
AUTOUIC ON
|
|
AUTORCC ON
|
|
AUTOUIC_SEARCH_PATHS forms
|
|
XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES
|
|
)
|