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 $==1 OR $==1 ( "${CMAKE_COMMAND}" -E make_directory "${RELEASE_DIR}/data/obs-plugins/${CMAKE_PROJECT_NAME}" "${RELEASE_DIR}/obs-plugins/${ARCH_NAME}" ) COMMAND if $==1 OR $==1 ( "${CMAKE_COMMAND}" -E copy_directory "${PROJECT_SOURCE_DIR}/data" "${RELEASE_DIR}/data/obs-plugins/${CMAKE_PROJECT_NAME}" ) COMMAND if $==1 OR $==1 ( "${CMAKE_COMMAND}" -E copy "$" "${RELEASE_DIR}/obs-plugins/${ARCH_NAME}" ) # If config is RelWithDebInfo, copy the pdb file COMMAND if $==1 ( "${CMAKE_COMMAND}" -E copy "$" "${RELEASE_DIR}/obs-plugins/${ARCH_NAME}" ) # Copy to obs-studio dev environment for immediate testing COMMAND if $==1 ( "${CMAKE_COMMAND}" -E copy "$" "${LIBOBS_INCLUDE_DIR}/../${OBS_BUILDDIR_ARCH}/rundir/$/obs-plugins/${ARCH_NAME}" ) COMMAND if $==1 ( "${CMAKE_COMMAND}" -E copy "$" "${LIBOBS_INCLUDE_DIR}/../${OBS_BUILDDIR_ARCH}/rundir/$/obs-plugins/${ARCH_NAME}" ) COMMAND if $==1 ( "${CMAKE_COMMAND}" -E make_directory "${LIBOBS_INCLUDE_DIR}/../${OBS_BUILDDIR_ARCH}/rundir/$/data/obs-plugins/${CMAKE_PROJECT_NAME}" ) COMMAND if $==1 ( "${CMAKE_COMMAND}" -E copy_directory "${PROJECT_SOURCE_DIR}/data" "${LIBOBS_INCLUDE_DIR}/../${OBS_BUILDDIR_ARCH}/rundir/$/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 --