cmake_minimum_required(VERSION 2.8.12) PROJECT(enc-vfw) ################################################################################ # Version ################################################################################ SET(enc-vfw_VERSION_MAJOR 0) SET(enc-vfw_VERSION_MINOR 1) SET(enc-vfw_VERSION_PATCH 0) SET(enc-vfw_VERSION_BUILD 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}/Include/Version.h.in" "${PROJECT_BINARY_DIR}/Include/Version.h" ) ################################################################################ # Code ################################################################################ SET(enc-vfw_HEADERS "${PROJECT_BINARY_DIR}/Include/Version.h" "Include/plugin.h" "Include/enc-vfw.h" ) SET(enc-vfw_SOURCES "Source/plugin.cpp" "Source/enc-vfw.cpp" ) SET(enc-vfw_LIBRARIES version winmm Vfw32.lib ) ################################################################################ # Standalone and OBS Studio Build Data ################################################################################ if(BUILD_VFW_ENCODER) # OBS Studio Specific # Directories INCLUDE_DIRECTORIES( "${CMAKE_SOURCE_DIR}" "${PROJECT_BINARY_DIR}" "${PROJECT_BINARY_DIR}/Include" "${PROJECT_BINARY_DIR}/Source" "${PROJECT_SOURCE_DIR}" "${PROJECT_SOURCE_DIR}/Include" "${PROJECT_SOURCE_DIR}/Source" ) SET(LIBOBS_LIBRARIES libobs) else() # Standlone Specific # Variables SET(PATH_OBSStudio "" CACHE PATH "OBS Studio Source Code Directory") if(PATH_OBSStudio STREQUAL "") message(STATUS "PATH_OBSStudio not set!") return() endif() if(NOT EXISTS "${PATH_OBSStudio}/libobs/obs-module.h") message(STATUS "PATH_OBSStudio invalid!") return() endif() # Find OBS Libraries SET(obsPath "${PATH_OBSStudio}") INCLUDE("${PATH_OBSStudio}/cmake/external/Findlibobs.cmake") # Compiling INCLUDE_DIRECTORIES( "${CMAKE_SOURCE_DIR}" "${PROJECT_BINARY_DIR}" "${PROJECT_BINARY_DIR}/Include" "${PROJECT_BINARY_DIR}/Source" "${PROJECT_SOURCE_DIR}" "${PROJECT_SOURCE_DIR}/Include" "${PROJECT_SOURCE_DIR}/Source" "${PATH_OBSStudio}/" ) endif() ################################################################################ # Build ################################################################################ ADD_LIBRARY(enc-vfw MODULE ${enc-vfw_HEADERS} ${enc-vfw_SOURCES} ) TARGET_LINK_LIBRARIES(enc-vfw ${LIBOBS_LIBRARIES} ${enc-vfw_LIBRARIES} ) # 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() if(BUILD_VFW_ENCODER) install_obs_plugin_with_data(enc-vfw Resources) else() math(EXPR BITS "8*${CMAKE_SIZEOF_VOID_P}") add_custom_command(TARGET enc-vfw POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory "${PROJECT_SOURCE_DIR}/Resources/locale" "${PROJECT_SOURCE_DIR}/#Build/data/obs-plugins/enc-vfw/locale" ) add_custom_command(TARGET enc-vfw POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy "$" "${PROJECT_SOURCE_DIR}/#Build/obs-plugins/${BITS}bit/$" ) add_custom_command(TARGET enc-vfw POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy "$/enc-vfw.pdb" "${PROJECT_SOURCE_DIR}/#Build/obs-plugins/${BITS}bit/enc-vfw.pdb" ) endif()