Files
obs-studio/plugins/frontend-tools/CMakeLists.txt
PatTheMav 1829492e6b cmake: Move frontend plugins into main plugins dir
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.
2026-06-05 16:00:18 -04:00

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
)