|
@@ -1,18 +1,24 @@
|
|
-cmake_minimum_required(VERSION 3.2)
|
|
|
|
-project(obs-plugintemplate)
|
|
|
|
|
|
+cmake_minimum_required(VERSION 3.5)
|
|
|
|
+project(obs-plugintemplate VERSION 1.0.0)
|
|
|
|
+
|
|
|
|
+set(PLUGIN_AUTHOR "Your Name Here")
|
|
|
|
+set(MACOS_BUNDLEID "com.example.obs-plugintemplate")
|
|
|
|
|
|
set(CMAKE_PREFIX_PATH "${QTDIR}")
|
|
set(CMAKE_PREFIX_PATH "${QTDIR}")
|
|
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
|
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
|
set(CMAKE_AUTOMOC ON)
|
|
set(CMAKE_AUTOMOC ON)
|
|
set(CMAKE_AUTOUIC ON)
|
|
set(CMAKE_AUTOUIC ON)
|
|
|
|
|
|
|
|
+# In case you need C++
|
|
|
|
+set(CMAKE_CXX_STANDARD 11)
|
|
|
|
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
+
|
|
if (WIN32 OR APPLE)
|
|
if (WIN32 OR APPLE)
|
|
include(external/FindLibObs.cmake)
|
|
include(external/FindLibObs.cmake)
|
|
endif()
|
|
endif()
|
|
|
|
|
|
find_package(LibObs REQUIRED)
|
|
find_package(LibObs REQUIRED)
|
|
-find_package(Qt5Core REQUIRED)
|
|
|
|
-find_package(Qt5Widgets REQUIRED)
|
|
|
|
|
|
+find_package(Qt5 REQUIRED COMPONENTS Core Widgets)
|
|
|
|
|
|
set(PLUGIN_SOURCES
|
|
set(PLUGIN_SOURCES
|
|
src/plugin-main.c)
|
|
src/plugin-main.c)
|
|
@@ -20,20 +26,35 @@ set(PLUGIN_SOURCES
|
|
set(PLUGIN_HEADERS
|
|
set(PLUGIN_HEADERS
|
|
src/plugin-macros.h)
|
|
src/plugin-macros.h)
|
|
|
|
|
|
|
|
+configure_file(
|
|
|
|
+ src/plugin-macros.h.in
|
|
|
|
+ src/plugin-macros.h
|
|
|
|
+)
|
|
|
|
+
|
|
|
|
+configure_file(
|
|
|
|
+ installer/installer-macOS.pkgproj.in
|
|
|
|
+ installer/installer-macOS.pkgproj
|
|
|
|
+)
|
|
|
|
+
|
|
|
|
+configure_file(
|
|
|
|
+ installer/installer-Windows.iss.in
|
|
|
|
+ installer/installer-Windows.iss
|
|
|
|
+)
|
|
|
|
+
|
|
# --- Platform-independent build settings ---
|
|
# --- Platform-independent build settings ---
|
|
-add_library(obs-plugintemplate MODULE
|
|
|
|
- ${PLUGIN_SOURCES}
|
|
|
|
- ${PLUGIN_HEADERS})
|
|
|
|
|
|
+add_library(${CMAKE_PROJECT_NAME} MODULE ${PLUGIN_SOURCES} ${PLUGIN_HEADERS})
|
|
|
|
|
|
include_directories(
|
|
include_directories(
|
|
"${LIBOBS_INCLUDE_DIR}/../UI/obs-frontend-api"
|
|
"${LIBOBS_INCLUDE_DIR}/../UI/obs-frontend-api"
|
|
${Qt5Core_INCLUDES}
|
|
${Qt5Core_INCLUDES}
|
|
- ${Qt5Widgets_INCLUDES})
|
|
|
|
|
|
+ ${Qt5Widgets_INCLUDES}
|
|
|
|
+)
|
|
|
|
|
|
-target_link_libraries(obs-plugintemplate
|
|
|
|
|
|
+target_link_libraries(${CMAKE_PROJECT_NAME}
|
|
libobs
|
|
libobs
|
|
Qt5::Core
|
|
Qt5::Core
|
|
- Qt5::Widgets)
|
|
|
|
|
|
+ Qt5::Widgets
|
|
|
|
+)
|
|
|
|
|
|
# --- End of section ---
|
|
# --- End of section ---
|
|
|
|
|
|
@@ -44,6 +65,11 @@ if(WIN32)
|
|
message(FATAL_ERROR "Could not find OBS Frontend API\'s library !")
|
|
message(FATAL_ERROR "Could not find OBS Frontend API\'s library !")
|
|
endif()
|
|
endif()
|
|
|
|
|
|
|
|
+ # Enable Multicore Builds and disable FH4 (to not depend on VCRUNTIME140_1.DLL when building with VS2019)
|
|
|
|
+ if (MSVC)
|
|
|
|
+ add_definitions(/MP /d2FH4-)
|
|
|
|
+ endif()
|
|
|
|
+
|
|
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
set(ARCH_NAME "64bit")
|
|
set(ARCH_NAME "64bit")
|
|
set(OBS_BUILDDIR_ARCH "build64")
|
|
set(OBS_BUILDDIR_ARCH "build64")
|
|
@@ -56,42 +82,65 @@ if(WIN32)
|
|
"${LIBOBS_INCLUDE_DIR}/../${OBS_BUILDDIR_ARCH}/UI"
|
|
"${LIBOBS_INCLUDE_DIR}/../${OBS_BUILDDIR_ARCH}/UI"
|
|
)
|
|
)
|
|
|
|
|
|
- target_link_libraries(obs-plugintemplate
|
|
|
|
- "${OBS_FRONTEND_LIB}")
|
|
|
|
|
|
+ target_link_libraries(${CMAKE_PROJECT_NAME}
|
|
|
|
+ "${OBS_FRONTEND_LIB}"
|
|
|
|
+ )
|
|
|
|
|
|
# --- Release package helper ---
|
|
# --- Release package helper ---
|
|
# The "release" folder has a structure similar OBS' one on Windows
|
|
# The "release" folder has a structure similar OBS' one on Windows
|
|
set(RELEASE_DIR "${PROJECT_SOURCE_DIR}/release")
|
|
set(RELEASE_DIR "${PROJECT_SOURCE_DIR}/release")
|
|
|
|
|
|
- add_custom_command(TARGET obs-plugintemplate POST_BUILD
|
|
|
|
- COMMAND if $<CONFIG:Release>==1 (
|
|
|
|
- "${CMAKE_COMMAND}" -E make_directory
|
|
|
|
- "${RELEASE_DIR}/data/obs-plugins/${CMAKE_PROJECT_NAME}"
|
|
|
|
- "${RELEASE_DIR}/obs-plugins/${ARCH_NAME}")
|
|
|
|
-
|
|
|
|
- COMMAND if $<CONFIG:Release>==1 ("${CMAKE_COMMAND}" -E copy_directory
|
|
|
|
- "${PROJECT_SOURCE_DIR}/data"
|
|
|
|
- "${RELEASE_DIR}/data/obs-plugins/${CMAKE_PROJECT_NAME}")
|
|
|
|
-
|
|
|
|
- COMMAND if $<CONFIG:Release>==1 ("${CMAKE_COMMAND}" -E copy
|
|
|
|
- "$<TARGET_FILE:${CMAKE_PROJECT_NAME}>"
|
|
|
|
- "${RELEASE_DIR}/obs-plugins/${ARCH_NAME}")
|
|
|
|
-
|
|
|
|
- # Copy to obs-studio dev environment for immediate testing
|
|
|
|
- COMMAND if $<CONFIG:Debug>==1 (
|
|
|
|
- "${CMAKE_COMMAND}" -E copy
|
|
|
|
- "$<TARGET_FILE:${CMAKE_PROJECT_NAME}>"
|
|
|
|
- "${LIBOBS_INCLUDE_DIR}/../${OBS_BUILDDIR_ARCH}/rundir/$<CONFIG>/obs-plugins/${ARCH_NAME}")
|
|
|
|
-
|
|
|
|
- COMMAND if $<CONFIG:Debug>==1 (
|
|
|
|
- "${CMAKE_COMMAND}" -E make_directory
|
|
|
|
- "${LIBOBS_INCLUDE_DIR}/../${OBS_BUILDDIR_ARCH}/rundir/$<CONFIG>/data/obs-plugins/${CMAKE_PROJECT_NAME}")
|
|
|
|
-
|
|
|
|
- COMMAND if $<CONFIG:Debug>==1 (
|
|
|
|
- "${CMAKE_COMMAND}" -E copy_directory
|
|
|
|
- "${PROJECT_SOURCE_DIR}/data"
|
|
|
|
- "${LIBOBS_INCLUDE_DIR}/../${OBS_BUILDDIR_ARCH}/rundir/$<CONFIG>/data/obs-plugins/${CMAKE_PROJECT_NAME}")
|
|
|
|
- )
|
|
|
|
|
|
+ add_custom_command(TARGET ${CMAKE_PROJECT_NAME} POST_BUILD
|
|
|
|
+ # If config is Release or RelWithDebInfo, package release files
|
|
|
|
+ COMMAND if $<CONFIG:Release>==1 OR $<CONFIG:RelWithDebInfo>==1 (
|
|
|
|
+ "${CMAKE_COMMAND}" -E make_directory
|
|
|
|
+ "${RELEASE_DIR}/data/obs-plugins/${CMAKE_PROJECT_NAME}"
|
|
|
|
+ "${RELEASE_DIR}/obs-plugins/${ARCH_NAME}"
|
|
|
|
+ )
|
|
|
|
+
|
|
|
|
+ COMMAND if $<CONFIG:Release>==1 OR $<CONFIG:RelWithDebInfo>==1 (
|
|
|
|
+ "${CMAKE_COMMAND}" -E copy_directory
|
|
|
|
+ "${PROJECT_SOURCE_DIR}/data"
|
|
|
|
+ "${RELEASE_DIR}/data/obs-plugins/${CMAKE_PROJECT_NAME}"
|
|
|
|
+ )
|
|
|
|
+
|
|
|
|
+ COMMAND if $<CONFIG:Release>==1 OR $<CONFIG:RelWithDebInfo>==1 (
|
|
|
|
+ "${CMAKE_COMMAND}" -E copy
|
|
|
|
+ "$<TARGET_FILE:${CMAKE_PROJECT_NAME}>"
|
|
|
|
+ "${RELEASE_DIR}/obs-plugins/${ARCH_NAME}"
|
|
|
|
+ )
|
|
|
|
+
|
|
|
|
+ # If config is RelWithDebInfo, copy the pdb file
|
|
|
|
+ COMMAND if $<CONFIG:RelWithDebInfo>==1 (
|
|
|
|
+ "${CMAKE_COMMAND}" -E copy
|
|
|
|
+ "$<TARGET_PDB_FILE:${CMAKE_PROJECT_NAME}>"
|
|
|
|
+ "${RELEASE_DIR}/obs-plugins/${ARCH_NAME}"
|
|
|
|
+ )
|
|
|
|
+
|
|
|
|
+ # Copy to obs-studio dev environment for immediate testing
|
|
|
|
+ COMMAND if $<CONFIG:Debug>==1 (
|
|
|
|
+ "${CMAKE_COMMAND}" -E copy
|
|
|
|
+ "$<TARGET_FILE:${CMAKE_PROJECT_NAME}>"
|
|
|
|
+ "${LIBOBS_INCLUDE_DIR}/../${OBS_BUILDDIR_ARCH}/rundir/$<CONFIG>/obs-plugins/${ARCH_NAME}"
|
|
|
|
+ )
|
|
|
|
+
|
|
|
|
+ COMMAND if $<CONFIG:Debug>==1 (
|
|
|
|
+ "${CMAKE_COMMAND}" -E copy
|
|
|
|
+ "$<TARGET_PDB_FILE:${CMAKE_PROJECT_NAME}>"
|
|
|
|
+ "${LIBOBS_INCLUDE_DIR}/../${OBS_BUILDDIR_ARCH}/rundir/$<CONFIG>/obs-plugins/${ARCH_NAME}"
|
|
|
|
+ )
|
|
|
|
+
|
|
|
|
+ COMMAND if $<CONFIG:Debug>==1 (
|
|
|
|
+ "${CMAKE_COMMAND}" -E make_directory
|
|
|
|
+ "${LIBOBS_INCLUDE_DIR}/../${OBS_BUILDDIR_ARCH}/rundir/$<CONFIG>/data/obs-plugins/${CMAKE_PROJECT_NAME}"
|
|
|
|
+ )
|
|
|
|
+
|
|
|
|
+ COMMAND if $<CONFIG:Debug>==1 (
|
|
|
|
+ "${CMAKE_COMMAND}" -E copy_directory
|
|
|
|
+ "${PROJECT_SOURCE_DIR}/data"
|
|
|
|
+ "${LIBOBS_INCLUDE_DIR}/../${OBS_BUILDDIR_ARCH}/rundir/$<CONFIG>/data/obs-plugins/${CMAKE_PROJECT_NAME}"
|
|
|
|
+ )
|
|
|
|
+ )
|
|
# --- End of sub-section ---
|
|
# --- End of sub-section ---
|
|
|
|
|
|
endif()
|
|
endif()
|
|
@@ -99,18 +148,18 @@ endif()
|
|
|
|
|
|
# --- Linux-specific build settings and tasks ---
|
|
# --- Linux-specific build settings and tasks ---
|
|
if(UNIX AND NOT APPLE)
|
|
if(UNIX AND NOT APPLE)
|
|
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
|
|
|
|
|
+ include(GNUInstallDirs)
|
|
|
|
|
|
- set_target_properties(obs-plugintemplate PROPERTIES PREFIX "")
|
|
|
|
- target_link_libraries(obs-plugintemplate
|
|
|
|
- obs-frontend-api)
|
|
|
|
|
|
+ set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES PREFIX "")
|
|
|
|
+ target_link_libraries(${CMAKE_PROJECT_NAME} obs-frontend-api)
|
|
|
|
|
|
file(GLOB locale_files data/locale/*.ini)
|
|
file(GLOB locale_files data/locale/*.ini)
|
|
|
|
|
|
- install(TARGETS obs-plugintemplate
|
|
|
|
- LIBRARY DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/obs-plugins")
|
|
|
|
|
|
+ install(TARGETS ${CMAKE_PROJECT_NAME}
|
|
|
|
+ LIBRARY DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/obs-plugins")
|
|
|
|
+
|
|
install(FILES ${locale_files}
|
|
install(FILES ${locale_files}
|
|
- DESTINATION "${CMAKE_INSTALL_PREFIX}/share/obs/obs-plugins/${CMAKE_PROJECT_NAME}/locale")
|
|
|
|
|
|
+ DESTINATION "${CMAKE_INSTALL_FULL_DATAROOTDIR}/obs/obs-plugins/${CMAKE_PROJECT_NAME}/locale")
|
|
endif()
|
|
endif()
|
|
# --- End of section ---
|
|
# --- End of section ---
|
|
|
|
|
|
@@ -118,7 +167,7 @@ endif()
|
|
if(APPLE)
|
|
if(APPLE)
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++ -fvisibility=default")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++ -fvisibility=default")
|
|
|
|
|
|
- set_target_properties(obs-plugintemplate PROPERTIES PREFIX "")
|
|
|
|
- target_link_libraries(obs-plugintemplate "${OBS_FRONTEND_LIB}")
|
|
|
|
|
|
+ set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES PREFIX "")
|
|
|
|
+ target_link_libraries(${CMAKE_PROJECT_NAME} "${OBS_FRONTEND_LIB}")
|
|
endif()
|
|
endif()
|
|
# -- End of section --
|
|
# -- End of section --
|