123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- 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_INCLUDE_CURRENT_DIR ON)
- set(CMAKE_AUTOMOC 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)
- include(external/FindLibObs.cmake)
- endif()
- find_package(LibObs REQUIRED)
- find_package(Qt5 REQUIRED COMPONENTS Core Widgets)
- set(PLUGIN_SOURCES
- src/plugin-main.c)
- set(PLUGIN_HEADERS
- 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 ---
- add_library(${CMAKE_PROJECT_NAME} MODULE ${PLUGIN_SOURCES} ${PLUGIN_HEADERS})
- include_directories(
- "${LIBOBS_INCLUDE_DIR}/../UI/obs-frontend-api"
- ${Qt5Core_INCLUDES}
- ${Qt5Widgets_INCLUDES}
- )
- target_link_libraries(${CMAKE_PROJECT_NAME}
- libobs
- Qt5::Core
- Qt5::Widgets
- )
- # --- End of section ---
- # --- Windows-specific build settings and tasks ---
- if(WIN32)
- if(NOT DEFINED OBS_FRONTEND_LIB)
- set(OBS_FRONTEND_LIB "OBS_FRONTEND_LIB-NOTFOUND" CACHE FILEPATH "OBS frontend library")
- message(FATAL_ERROR "Could not find OBS Frontend API\'s library !")
- 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)
- set(ARCH_NAME "64bit")
- set(OBS_BUILDDIR_ARCH "build64")
- else()
- set(ARCH_NAME "32bit")
- set(OBS_BUILDDIR_ARCH "build32")
- endif()
- include_directories(
- "${LIBOBS_INCLUDE_DIR}/../${OBS_BUILDDIR_ARCH}/UI"
- )
- target_link_libraries(${CMAKE_PROJECT_NAME}
- "${OBS_FRONTEND_LIB}"
- )
- # --- Release package helper ---
- # The "release" folder has a structure similar OBS' one on Windows
- set(RELEASE_DIR "${PROJECT_SOURCE_DIR}/release")
- 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 ---
- endif()
- # --- End of section ---
- # --- Linux-specific build settings and tasks ---
- if(UNIX AND NOT APPLE)
- include(GNUInstallDirs)
- set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES PREFIX "")
- target_link_libraries(${CMAKE_PROJECT_NAME} obs-frontend-api)
- file(GLOB locale_files data/locale/*.ini)
- install(TARGETS ${CMAKE_PROJECT_NAME}
- LIBRARY DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/obs-plugins")
- install(FILES ${locale_files}
- DESTINATION "${CMAKE_INSTALL_FULL_DATAROOTDIR}/obs/obs-plugins/${CMAKE_PROJECT_NAME}/locale")
- endif()
- # --- End of section ---
- # -- OS X specific build settings and tasks --
- if(APPLE)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++ -fvisibility=default")
- set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES PREFIX "")
- target_link_libraries(${CMAKE_PROJECT_NAME} "${OBS_FRONTEND_LIB}")
- endif()
- # -- End of section --
|