mirror of
https://github.com/obsproject/obs-studio.git
synced 2026-03-16 13:37:05 -04:00
Merge pull request #77 from BtbN/cmake_export
Export libobs cmake target, so external plugins can be built
This commit is contained in:
@@ -78,4 +78,8 @@ endif()
|
||||
|
||||
set(CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_NAME}")
|
||||
|
||||
if(UNIX_STRUCTURE)
|
||||
set(CPACK_SET_DESTDIR TRUE)
|
||||
endif()
|
||||
|
||||
include(CPack)
|
||||
|
||||
@@ -55,6 +55,8 @@ if(NOT UNIX_STRUCTURE)
|
||||
set(OBS_PLUGIN64_DESTINATION "obs-plugins/64bit")
|
||||
add_definitions(-DOBS_DATA_PATH="../../${OBS_DATA_DESTINATION}")
|
||||
endif()
|
||||
set(OBS_CMAKE_DESTINATION "cmake")
|
||||
set(OBS_INCLUDE_DESTINATION "include")
|
||||
else()
|
||||
set(OBS_EXECUTABLE_DESTINATION "bin")
|
||||
set(OBS_EXECUTABLE32_DESTINATION "bin32")
|
||||
@@ -66,6 +68,8 @@ else()
|
||||
set(OBS_PLUGIN32_DESTINATION "lib32/obs-plugins")
|
||||
set(OBS_PLUGIN64_DESTINATION "lib64/obs-plugins")
|
||||
set(OBS_DATA_DESTINATION "share/obs")
|
||||
set(OBS_CMAKE_DESTINATION "lib/cmake")
|
||||
set(OBS_INCLUDE_DESTINATION "include/obs")
|
||||
add_definitions(-DOBS_DATA_PATH="${OBS_DATA_DESTINATION}")
|
||||
add_definitions(-DOBS_INSTALL_PREFIX="${CMAKE_INSTALL_PREFIX}/")
|
||||
endif()
|
||||
@@ -137,6 +141,56 @@ function(obs_install_additional)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
macro(export_obs_core target exportname)
|
||||
install(TARGETS ${target}
|
||||
EXPORT "${exportname}Target"
|
||||
LIBRARY DESTINATION "${OBS_LIBRARY_DESTINATION}"
|
||||
ARCHIVE DESTINATION "${OBS_LIBRARY_DESTINATION}"
|
||||
RUNTIME DESTINATION "${OBS_EXECUTABLE_DESTINATION}")
|
||||
|
||||
export(TARGETS ${target} FILE "${CMAKE_CURRENT_BINARY_DIR}/${exportname}Target.cmake")
|
||||
export(PACKAGE "${exportname}")
|
||||
|
||||
set(CONF_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}")
|
||||
set(CONF_PLUGIN_DEST "${CMAKE_BINARY_DIR}/rundir/${CMAKE_BUILD_TYPE}/obs-plugins/${_lib_suffix}bit")
|
||||
set(CONF_PLUGIN_DEST32 "${CMAKE_BINARY_DIR}/rundir/${CMAKE_BUILD_TYPE}/obs-plugins/32bit")
|
||||
set(CONF_PLUGIN_DEST64 "${CMAKE_BINARY_DIR}/rundir/${CMAKE_BUILD_TYPE}/obs-plugins/64bit")
|
||||
configure_file("${exportname}Config.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/${exportname}Config.cmake" @ONLY)
|
||||
|
||||
file(RELATIVE_PATH _pdir "${CMAKE_INSTALL_PREFIX}/${OBS_CMAKE_DESTINATION}/${exportname}" "${CMAKE_INSTALL_PREFIX}")
|
||||
set(CONF_INCLUDE_DIRS "\${CMAKE_CURRENT_LIST_DIR}/${_pdir}${OBS_INCLUDE_DESTINATION}")
|
||||
set(CONF_PLUGIN_DEST "\${CMAKE_CURRENT_LIST_DIR}/${_pdir}${OBS_PLUGIN_DESTINATION}")
|
||||
set(CONF_PLUGIN_DEST32 "\${CMAKE_CURRENT_LIST_DIR}/${_pdir}${OBS_PLUGIN32_DESTINATION}")
|
||||
set(CONF_PLUGIN_DEST64 "\${CMAKE_CURRENT_LIST_DIR}/${_pdir}${OBS_PLUGIN64_DESTINATION}")
|
||||
configure_file("${exportname}Config.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${exportname}Config.cmake" @ONLY)
|
||||
|
||||
set(_pdir)
|
||||
|
||||
configure_file("${exportname}ConfigVersion.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/${exportname}ConfigVersion.cmake" @ONLY)
|
||||
|
||||
install(FILES
|
||||
"${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${exportname}Config.cmake"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${exportname}ConfigVersion.cmake"
|
||||
DESTINATION "${OBS_CMAKE_DESTINATION}/${exportname}")
|
||||
|
||||
install(EXPORT "${exportname}Target"
|
||||
DESTINATION "${OBS_CMAKE_DESTINATION}/${exportname}")
|
||||
endmacro()
|
||||
|
||||
macro(install_obs_headers)
|
||||
foreach(hdr ${ARGN})
|
||||
if(IS_ABSOLUTE "${hdr}")
|
||||
set(subdir)
|
||||
else()
|
||||
get_filename_component(subdir "${hdr}" DIRECTORY)
|
||||
if(subdir)
|
||||
set(subdir "/${subdir}")
|
||||
endif()
|
||||
endif()
|
||||
install(FILES "${hdr}" DESTINATION "${OBS_INCLUDE_DESTINATION}${subdir}")
|
||||
endforeach()
|
||||
endmacro()
|
||||
|
||||
macro(install_obs_core target)
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
set(_bit_suffix "64bit/")
|
||||
@@ -148,9 +202,14 @@ macro(install_obs_core target)
|
||||
set(_bit_suffix "")
|
||||
endif()
|
||||
|
||||
install(TARGETS ${target}
|
||||
LIBRARY DESTINATION "${OBS_LIBRARY_DESTINATION}"
|
||||
RUNTIME DESTINATION "${OBS_EXECUTABLE_DESTINATION}")
|
||||
if("${ARGV1}" STREQUAL "EXPORT")
|
||||
export_obs_core("${target}" "${ARGV2}")
|
||||
else()
|
||||
install(TARGETS ${target}
|
||||
LIBRARY DESTINATION "${OBS_LIBRARY_DESTINATION}"
|
||||
RUNTIME DESTINATION "${OBS_EXECUTABLE_DESTINATION}")
|
||||
endif()
|
||||
|
||||
add_custom_command(TARGET ${target} POST_BUILD
|
||||
COMMAND "${CMAKE_COMMAND}" -E copy
|
||||
"$<TARGET_FILE:${target}>"
|
||||
|
||||
5
deps/CMakeLists.txt
vendored
5
deps/CMakeLists.txt
vendored
@@ -1,7 +1,4 @@
|
||||
|
||||
if(WIN32)
|
||||
add_subdirectory(w32-pthreads)
|
||||
endif()
|
||||
|
||||
add_subdirectory(w32-pthreads)
|
||||
add_subdirectory(glad)
|
||||
add_subdirectory(jansson)
|
||||
|
||||
4
deps/w32-pthreads/CMakeLists.txt
vendored
4
deps/w32-pthreads/CMakeLists.txt
vendored
@@ -1,5 +1,9 @@
|
||||
project(w32-pthreads)
|
||||
|
||||
if(NOT WIN32)
|
||||
return()
|
||||
endif()
|
||||
|
||||
set(w32-pthreads_SOURCES
|
||||
pthread.c)
|
||||
|
||||
|
||||
@@ -26,8 +26,6 @@ if(WIN32)
|
||||
set(libobs_PLATFORM_DEPS
|
||||
w32-pthreads
|
||||
winmm.lib)
|
||||
|
||||
add_definitions(-DPTW32_STATIC_LIB)
|
||||
elseif(APPLE)
|
||||
set(libobs_PLATFORM_SOURCES
|
||||
obs-cocoa.c
|
||||
@@ -59,11 +57,11 @@ if(MSVC)
|
||||
endif()
|
||||
|
||||
configure_file(
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/config.h.in"
|
||||
"${CMAKE_BINARY_DIR}/config/config.h")
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/obsconfig.h.in"
|
||||
"${CMAKE_BINARY_DIR}/config/obsconfig.h")
|
||||
|
||||
set(libobs_config_HEADERS
|
||||
config.h
|
||||
"${CMAKE_BINARY_DIR}/config/obsconfig.h"
|
||||
obs-config.h)
|
||||
|
||||
set(libobs_callback_SOURCES
|
||||
@@ -203,6 +201,7 @@ set(libobs_SOURCES
|
||||
${libobs_libobs_SOURCES})
|
||||
|
||||
set(libobs_HEADERS
|
||||
${libobs_config_HEADERS}
|
||||
${libobs_callback_HEADERS}
|
||||
${libobs_graphics_HEADERS}
|
||||
${libobs_mediaio_HEADERS}
|
||||
@@ -225,13 +224,21 @@ set_target_properties(libobs PROPERTIES
|
||||
OUTPUT_NAME obs
|
||||
VERSION "0"
|
||||
SOVERSION "0")
|
||||
target_compile_definitions(libobs PUBLIC HAVE_OBSCONFIG_H)
|
||||
|
||||
if(NOT MSVC)
|
||||
target_compile_options(libobs PUBLIC "-mmmx" "-msse" "-msse2")
|
||||
endif()
|
||||
|
||||
target_link_libraries(libobs
|
||||
jansson
|
||||
${libobs_PLATFORM_DEPS}
|
||||
${Libswscale_LIBRARIES}
|
||||
${Libswresample_LIBRARIES}
|
||||
${Libavutil_LIBRARIES})
|
||||
PRIVATE
|
||||
jansson
|
||||
${libobs_PLATFORM_DEPS}
|
||||
${Libswscale_LIBRARIES}
|
||||
${Libswresample_LIBRARIES}
|
||||
${Libavutil_LIBRARIES})
|
||||
|
||||
install_obs_core(libobs)
|
||||
install_obs_core(libobs EXPORT LibObs)
|
||||
install_obs_data(libobs ../build/data/libobs libobs)
|
||||
install_obs_headers(${libobs_HEADERS})
|
||||
|
||||
|
||||
23
libobs/LibObsConfig.cmake.in
Normal file
23
libobs/LibObsConfig.cmake.in
Normal file
@@ -0,0 +1,23 @@
|
||||
# - Config file for the LibObs package
|
||||
# It defines the following variables
|
||||
# LIBOBS_INCLUDE_DIRS
|
||||
# LIBOBS_LIBRARIES
|
||||
# LIBOBS_PLUGIN_DESTINATION{,32,64}
|
||||
|
||||
set(LIBOBS_PLUGIN_DESTINATION "@CONF_PLUGIN_DEST@")
|
||||
set(LIBOBS_PLUGIN_DESTINATION32 "@CONF_PLUGIN_DEST32@")
|
||||
set(LIBOBS_PLUGIN_DESTINATION64 "@CONF_PLUGIN_DEST64@")
|
||||
set(LIBOBS_INCLUDE_DIRS "@CONF_INCLUDE_DIRS@")
|
||||
|
||||
# Cleanup possible relative paths
|
||||
get_filename_component(LIBOBS_PLUGIN_DESTINATION "${LIBOBS_PLUGIN_DESTINATION}" ABSOLUTE)
|
||||
get_filename_component(LIBOBS_PLUGIN_DESTINATION32 "${LIBOBS_PLUGIN_DESTINATION32}" ABSOLUTE)
|
||||
get_filename_component(LIBOBS_PLUGIN_DESTINATION64 "${LIBOBS_PLUGIN_DESTINATION64}" ABSOLUTE)
|
||||
get_filename_component(LIBOBS_INCLUDE_DIRS "${LIBOBS_INCLUDE_DIRS}" ABSOLUTE)
|
||||
|
||||
if(NOT TARGET libobs)
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/LibObsTarget.cmake")
|
||||
endif()
|
||||
|
||||
set(LIBOBS_LIBRARIES libobs)
|
||||
|
||||
10
libobs/LibObsConfigVersion.cmake.in
Normal file
10
libobs/LibObsConfigVersion.cmake.in
Normal file
@@ -0,0 +1,10 @@
|
||||
set(PACKAGE_VERSION "@OBS_VERSION@")
|
||||
|
||||
if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}")
|
||||
set(PACKAGE_VERSION_COMPATIBLE FALSE)
|
||||
else()
|
||||
set(PACKAGE_VERSION_COMPATIBLE TRUE)
|
||||
if ("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}")
|
||||
set(PACKAGE_VERSION_EXACT TRUE)
|
||||
endif()
|
||||
endif()
|
||||
@@ -17,8 +17,8 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include "config.h"
|
||||
#ifdef HAVE_OBSCONFIG_H
|
||||
# include "obsconfig.h"
|
||||
#else
|
||||
|
||||
#define OBS_VERSION "unknown"
|
||||
|
||||
@@ -5,13 +5,14 @@ find_library(COCOA Cocoa)
|
||||
find_library(COREFOUNDATION CoreFoundation)
|
||||
find_library(COREMEDIA CoreMedia)
|
||||
find_library(COREVIDEO CoreVideo)
|
||||
|
||||
find_library(COCOA Cocoa)
|
||||
|
||||
include_directories(${AVFOUNDATION}
|
||||
${COCOA}
|
||||
${COREFOUNDATION}
|
||||
${COREMEDIA}
|
||||
${COREVIDEO})
|
||||
${COREVIDEO}
|
||||
${COCOA})
|
||||
|
||||
set(mac-avcapture_HEADERS
|
||||
)
|
||||
@@ -33,6 +34,8 @@ target_link_libraries(mac-avcapture
|
||||
${COCOA}
|
||||
${COREFOUNDATION}
|
||||
${COREMEDIA}
|
||||
${COREVIDEO})
|
||||
${COREVIDEO}
|
||||
${COCOA})
|
||||
|
||||
install_obs_plugin(mac-avcapture)
|
||||
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
project(obs-ffmpeg)
|
||||
|
||||
if(WIN32)
|
||||
set(obs-ffmpeg_PLATFORM_DEPS
|
||||
w32-pthreads)
|
||||
endif()
|
||||
|
||||
find_package(Libavcodec REQUIRED)
|
||||
include_directories(${Libavcodec_INCLUDE_DIR})
|
||||
add_definitions(${Libavcodec_DEFINITIONS})
|
||||
@@ -32,6 +37,7 @@ add_library(obs-ffmpeg MODULE
|
||||
${obs-ffmpeg_SOURCES})
|
||||
target_link_libraries(obs-ffmpeg
|
||||
libobs
|
||||
${obs-ffmpeg_PLATFORM_DEPS}
|
||||
${Libavcodec_LIBRARIES}
|
||||
${Libavutil_LIBRARIES}
|
||||
${Libswscale_LIBRARIES}
|
||||
|
||||
@@ -2,6 +2,7 @@ project(obs-outputs)
|
||||
|
||||
if(WIN32)
|
||||
set(obs-outputs_PLATFORM_DEPS
|
||||
w32-pthreads
|
||||
ws2_32.lib
|
||||
winmm.lib)
|
||||
endif()
|
||||
|
||||
@@ -21,6 +21,9 @@ if(APPLE)
|
||||
set(test-input_PLATFORM_DEPS
|
||||
${IOSURF}
|
||||
${COCOA})
|
||||
elseif(WIN32)
|
||||
set(test-input_PLATFORM_DEPS
|
||||
w32-pthreads)
|
||||
endif()
|
||||
|
||||
set(test-input_SOURCES
|
||||
|
||||
Reference in New Issue
Block a user