mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
2bfa1b4c64
Despite building the PDBs for qrcodegencpp debug builds, we do not currently ship those PDBs, so MSVC emits an LNK4099 warning, which causes a build failure. It's unlikely that we'll need to debug in linked dependencies, so we can ignore this warning. Should we decide in the future to ship PDBs for these dependencies, the warning would no longer be emitted, and this flag would be superfluous without requiring a change. For now, let's make sure we can build in Debug.
174 lines
5.8 KiB
CMake
174 lines
5.8 KiB
CMake
cmake_minimum_required(VERSION 3.16...3.25)
|
|
|
|
legacy_check()
|
|
|
|
set(obs-websocket_VERSION 5.3.0)
|
|
set(OBS_WEBSOCKET_RPC_VERSION 1)
|
|
|
|
option(ENABLE_WEBSOCKET "Enable building OBS with websocket plugin" ON)
|
|
if(NOT ENABLE_WEBSOCKET)
|
|
target_disable(obs-websocket)
|
|
return()
|
|
endif()
|
|
|
|
# Find Qt
|
|
find_qt(COMPONENTS Core Widgets Svg Network)
|
|
|
|
# Find nlohmann JSON
|
|
find_package(nlohmann_json 3 REQUIRED)
|
|
|
|
# Find qrcodegencpp
|
|
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG ON)
|
|
find_package(qrcodegencpp REQUIRED)
|
|
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG OFF)
|
|
|
|
# Find WebSocket++
|
|
find_package(Websocketpp 0.8 REQUIRED)
|
|
|
|
# Find Asio
|
|
find_package(Asio 1.12.1 REQUIRED)
|
|
|
|
add_library(obs-websocket MODULE)
|
|
add_library(OBS::websocket ALIAS obs-websocket)
|
|
|
|
target_sources(obs-websocket PRIVATE)
|
|
|
|
target_sources(
|
|
obs-websocket
|
|
PRIVATE src/obs-websocket.cpp
|
|
src/obs-websocket.h
|
|
src/Config.cpp
|
|
src/Config.h
|
|
lib/obs-websocket-api.h
|
|
src/forms/ConnectInfo.cpp
|
|
src/forms/ConnectInfo.h
|
|
src/forms/resources.qrc
|
|
src/forms/SettingsDialog.cpp
|
|
src/forms/SettingsDialog.h
|
|
src/WebSocketApi.cpp
|
|
src/WebSocketApi.h)
|
|
|
|
target_sources(
|
|
obs-websocket
|
|
PRIVATE src/websocketserver/WebSocketServer.cpp
|
|
src/websocketserver/WebSocketServer_Protocol.cpp
|
|
src/websocketserver/WebSocketServer.h
|
|
src/websocketserver/rpc/WebSocketSession.h
|
|
src/websocketserver/types/WebSocketCloseCode.h
|
|
src/websocketserver/types/WebSocketOpCode.h)
|
|
|
|
target_sources(
|
|
obs-websocket
|
|
PRIVATE src/eventhandler/EventHandler.cpp
|
|
src/eventhandler/EventHandler.h
|
|
src/eventhandler/EventHandler_Config.cpp
|
|
src/eventhandler/EventHandler_General.cpp
|
|
src/eventhandler/EventHandler_Filters.cpp
|
|
src/eventhandler/EventHandler_Inputs.cpp
|
|
src/eventhandler/EventHandler_MediaInputs.cpp
|
|
src/eventhandler/EventHandler_Outputs.cpp
|
|
src/eventhandler/EventHandler_Scenes.cpp
|
|
src/eventhandler/EventHandler_SceneItems.cpp
|
|
src/eventhandler/EventHandler_Transitions.cpp
|
|
src/eventhandler/EventHandler_Ui.cpp
|
|
src/eventhandler/types/EventSubscription.h)
|
|
|
|
target_sources(
|
|
obs-websocket
|
|
PRIVATE src/requesthandler/RequestBatchHandler.cpp
|
|
src/requesthandler/RequestBatchHandler.h
|
|
src/requesthandler/RequestHandler.cpp
|
|
src/requesthandler/RequestHandler.h
|
|
src/requesthandler/RequestHandler_Config.cpp
|
|
src/requesthandler/RequestHandler_Filters.cpp
|
|
src/requesthandler/RequestHandler_General.cpp
|
|
src/requesthandler/RequestHandler_Inputs.cpp
|
|
src/requesthandler/RequestHandler_MediaInputs.cpp
|
|
src/requesthandler/RequestHandler_Outputs.cpp
|
|
src/requesthandler/RequestHandler_Sources.cpp
|
|
src/requesthandler/RequestHandler_Record.cpp
|
|
src/requesthandler/RequestHandler_Scenes.cpp
|
|
src/requesthandler/RequestHandler_SceneItems.cpp
|
|
src/requesthandler/RequestHandler_Stream.cpp
|
|
src/requesthandler/RequestHandler_Transitions.cpp
|
|
src/requesthandler/RequestHandler_Ui.cpp
|
|
src/requesthandler/rpc/Request.cpp
|
|
src/requesthandler/rpc/Request.h
|
|
src/requesthandler/rpc/RequestBatchRequest.cpp
|
|
src/requesthandler/rpc/RequestBatchRequest.h
|
|
src/requesthandler/rpc/RequestResult.cpp
|
|
src/requesthandler/rpc/RequestResult.h
|
|
src/requesthandler/types/RequestStatus.h
|
|
src/requesthandler/types/RequestBatchExecutionType.h)
|
|
|
|
target_sources(
|
|
obs-websocket
|
|
PRIVATE src/utils/Compat.cpp
|
|
src/utils/Compat.h
|
|
src/utils/Crypto.cpp
|
|
src/utils/Crypto.h
|
|
src/utils/Json.cpp
|
|
src/utils/Json.h
|
|
src/utils/Obs.cpp
|
|
src/utils/Obs.h
|
|
src/utils/Obs_ActionHelper.cpp
|
|
src/utils/Obs_ArrayHelper.cpp
|
|
src/utils/Obs_NumberHelper.cpp
|
|
src/utils/Obs_ObjectHelper.cpp
|
|
src/utils/Obs_StringHelper.cpp
|
|
src/utils/Obs_SearchHelper.cpp
|
|
src/utils/Obs_VolumeMeter.cpp
|
|
src/utils/Obs_VolumeMeter.h
|
|
src/utils/Obs_VolumeMeter_Helpers.h
|
|
src/utils/Platform.cpp
|
|
src/utils/Platform.h
|
|
src/utils/Utils.h)
|
|
|
|
configure_file(src/plugin-macros.h.in plugin-macros.generated.h)
|
|
target_sources(obs-websocket PRIVATE plugin-macros.generated.h)
|
|
|
|
target_compile_definitions(
|
|
obs-websocket PRIVATE ASIO_STANDALONE $<$<BOOL:PLUGIN_TESTS>:PLUGIN_TESTS>
|
|
$<$<PLATFORM_ID:Windows>:_WEBSOCKETPP_CPP11_STL_> $<$<PLATFORM_ID:Windows>:_WIN32_WINNT=0x0603>)
|
|
|
|
target_compile_options(
|
|
obs-websocket
|
|
PRIVATE
|
|
$<$<PLATFORM_ID:Windows>:/wd4267>
|
|
$<$<PLATFORM_ID:Windows>:/wd4996>
|
|
$<$<PLATFORM_ID:Darwin,Linux,FreeBSD>:-Wall>
|
|
$<$<COMPILE_LANG_AND_ID:CXX,GNU,AppleClang,Clang>:-Wno-error=float-conversion;-Wno-error=shadow>
|
|
$<$<COMPILE_LANG_AND_ID:CXX,GNU>:-Wno-error=format-overflow;-Wno-error=int-conversion;-Wno-error=comment>
|
|
$<$<COMPILE_LANG_AND_ID:CXX,AppleClang,Clang>:-Wno-error=null-pointer-subtraction;-Wno-error=deprecated-declarations;-Wno-error=implicit-int-conversion;-Wno-error=shorten-64-to-32;-Wno-comma;-Wno-quoted-include-in-framework-header>
|
|
)
|
|
|
|
target_link_libraries(
|
|
obs-websocket
|
|
PRIVATE OBS::libobs
|
|
OBS::frontend-api
|
|
Qt::Core
|
|
Qt::Widgets
|
|
Qt::Svg
|
|
Qt::Network
|
|
nlohmann_json::nlohmann_json
|
|
Websocketpp::Websocketpp
|
|
Asio::Asio
|
|
qrcodegencpp::qrcodegencpp)
|
|
|
|
set_target_properties_obs(
|
|
obs-websocket
|
|
PROPERTIES FOLDER plugins
|
|
PREFIX ""
|
|
AUTOMOC ON
|
|
AUTOUIC ON
|
|
AUTORCC ON)
|
|
|
|
if(OS_WINDOWS)
|
|
set_property(
|
|
TARGET obs-websocket
|
|
APPEND
|
|
PROPERTY AUTORCC_OPTIONS --format-version 1)
|
|
|
|
target_link_options(obs-websocket PRIVATE /IGNORE:4099)
|
|
endif()
|