cmake_minimum_required(VERSION 2.8.12) PROJECT(obs-stream-effects) ################################################################################ # Version ################################################################################ SET(VERSION_MAJOR 0) SET(VERSION_MINOR 2) SET(VERSION_PATCH 0) #configure_file( # "${PROJECT_SOURCE_DIR}/#Resources/package.in.bat" # "${PROJECT_SOURCE_DIR}/#Resources/package.bat" #) #configure_file( # "${PROJECT_SOURCE_DIR}/#Resources/Installer.in.iss" # "${PROJECT_SOURCE_DIR}/#Resources/Installer.iss" #) configure_file( "${PROJECT_SOURCE_DIR}/source/version.h.in" "${PROJECT_BINARY_DIR}/source/version.h" ) ################################################################################ # Code ################################################################################ SET(obs-stream-effects_HEADERS "${PROJECT_SOURCE_DIR}/source/plugin.h" "${PROJECT_SOURCE_DIR}/source/filter-displacement.h" "${PROJECT_SOURCE_DIR}/source/filter-blur.h" "${PROJECT_SOURCE_DIR}/source/filter-shape.h" "${PROJECT_SOURCE_DIR}/source/filter-transform.h" "${PROJECT_SOURCE_DIR}/source/gs-helper.h" "${PROJECT_SOURCE_DIR}/source/gs-effect.h" "${PROJECT_SOURCE_DIR}/source/gs-indexbuffer.h" "${PROJECT_SOURCE_DIR}/source/gs-mipmapper.h" "${PROJECT_SOURCE_DIR}/source/gs-rendertarget.h" "${PROJECT_SOURCE_DIR}/source/gs-texture.h" "${PROJECT_SOURCE_DIR}/source/gs-vertex.h" "${PROJECT_SOURCE_DIR}/source/gs-vertexbuffer.h" "${PROJECT_SOURCE_DIR}/source/gs-mipmapper.h" "${PROJECT_BINARY_DIR}/source/version.h" "${PROJECT_SOURCE_DIR}/source/strings.h" ) SET(obs-stream-effects_SOURCES "${PROJECT_SOURCE_DIR}/source/plugin.cpp" "${PROJECT_SOURCE_DIR}/source/filter-displacement.cpp" "${PROJECT_SOURCE_DIR}/source/filter-blur.cpp" "${PROJECT_SOURCE_DIR}/source/filter-shape.cpp" "${PROJECT_SOURCE_DIR}/source/filter-transform.cpp" "${PROJECT_SOURCE_DIR}/source/gs-helper.cpp" "${PROJECT_SOURCE_DIR}/source/gs-effect.cpp" "${PROJECT_SOURCE_DIR}/source/gs-indexbuffer.cpp" "${PROJECT_SOURCE_DIR}/source/gs-mipmapper.cpp" "${PROJECT_SOURCE_DIR}/source/gs-rendertarget.cpp" "${PROJECT_SOURCE_DIR}/source/gs-texture.cpp" "${PROJECT_SOURCE_DIR}/source/gs-vertex.cpp" "${PROJECT_SOURCE_DIR}/source/gs-vertexbuffer.cpp" "${PROJECT_SOURCE_DIR}/source/gs-mipmapper.cpp" ) SET(obs-stream-effects_LOCALE "${PROJECT_SOURCE_DIR}/data/locale/en-US.ini" ) SET(obs-stream-effects_EFFECTS "${PROJECT_SOURCE_DIR}/data/effects/bilateral-blur.effect" "${PROJECT_SOURCE_DIR}/data/effects/box-blur.effect" "${PROJECT_SOURCE_DIR}/data/effects/gaussian-blur.effect" "${PROJECT_SOURCE_DIR}/data/effects/displace.effect" "${PROJECT_SOURCE_DIR}/data/effects/color-conversion.effect" "${PROJECT_SOURCE_DIR}/data/effects/mip-mapper.effect" ) SET(obs-stream-effects_LOCALE "${PROJECT_SOURCE_DIR}/data/locale/en-US.ini" ) SET(obs-stream-effects_EFFECTS "${PROJECT_SOURCE_DIR}/data/effects/bilateral-blur.effect" "${PROJECT_SOURCE_DIR}/data/effects/box-blur.effect" "${PROJECT_SOURCE_DIR}/data/effects/gaussian-blur.effect" "${PROJECT_SOURCE_DIR}/data/effects/displace.effect" "${PROJECT_SOURCE_DIR}/data/effects/color-conversion.effect" ) SET(obs-stream-effects_LIBRARIES ) #set_property(GLOBAL PROPERTY USE_FOLDERS ON) source_group("Data Files\\Locale" FILES ${obs-stream-effects_LOCALE}) source_group("Data Files\\Effects" FILES ${obs-stream-effects_EFFECTS}) ################################################################################ # Standalone and OBS Studio Build Data ################################################################################ if(TARGET libobs) # OBS Studio Specific # Directories INCLUDE_DIRECTORIES( "${CMAKE_SOURCE_DIR}" "${PROJECT_BINARY_DIR}" "${PROJECT_BINARY_DIR}/source" "${PROJECT_SOURCE_DIR}" "${PROJECT_SOURCE_DIR}/source" ) SET(LIBOBS_LIBRARIES libobs) else() # Standlone Specific SET(PATH_OBSStudio "" CACHE PATH "OBS Studio Source Code Directory") if(PATH_OBSStudio STREQUAL "") message(FATAL_ERROR "PATH_OBSStudio not set!") return() endif() if(NOT EXISTS "${PATH_OBSStudio}/libobs/obs-module.h") message(FATAL_ERROR "PATH_OBSStudio invalid!") return() endif() # Find OBS Libraries SET(obsPath "${PATH_OBSStudio}") INCLUDE("${PATH_OBSStudio}/cmake/external/Findlibobs.cmake") # Compiling INCLUDE_DIRECTORIES( "${PROJECT_BINARY_DIR}" "${PROJECT_BINARY_DIR}/source" "${PROJECT_SOURCE_DIR}" "${PROJECT_SOURCE_DIR}/source" "${PATH_OBSStudio}" ) add_definitions(-D_CRT_SECURE_NO_WARNINGS) endif() ################################################################################ # Build ################################################################################ ADD_LIBRARY(obs-stream-effects MODULE ${obs-stream-effects_HEADERS} ${obs-stream-effects_SOURCES} ${obs-stream-effects_LOCALE} ${obs-stream-effects_EFFECTS} ) TARGET_LINK_LIBRARIES(obs-stream-effects ${LIBOBS_LIBRARIES} ${obs-stream-effects_LIBRARIES} ) if(TARGET libobs) install_obs_plugin_with_data(obs-stream-effects data) else() # All Warnings, Extra Warnings, Pedantic if(MSVC) # Force to always compile with W4 if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]") string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") else() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4") endif() elseif(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) # Update if necessary set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-long-long -pedantic") endif() math(EXPR BITS "8*${CMAKE_SIZEOF_VOID_P}") add_custom_command(TARGET obs-stream-effects POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory "${PROJECT_SOURCE_DIR}/data" "${PROJECT_SOURCE_DIR}/#Build/data/obs-plugins/obs-stream-effects" ) add_custom_command(TARGET obs-stream-effects POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy "$" "${PROJECT_SOURCE_DIR}/#Build/obs-plugins/${BITS}bit/$" ) add_custom_command(TARGET obs-stream-effects POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy "$/obs-stream-effects.pdb" "${PROJECT_SOURCE_DIR}/#Build/obs-plugins/${BITS}bit/obs-stream-effects.pdb" ) endif()