137 lines
3.7 KiB
CMake
137 lines
3.7 KiB
CMake
|
|
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
|
||
|
|
"$<TARGET_FILE:enc-vfw>"
|
||
|
|
"${PROJECT_SOURCE_DIR}/#Build/obs-plugins/${BITS}bit/$<TARGET_FILE_NAME:enc-vfw>"
|
||
|
|
)
|
||
|
|
add_custom_command(TARGET enc-vfw POST_BUILD
|
||
|
|
COMMAND ${CMAKE_COMMAND} -E copy
|
||
|
|
"$<TARGET_FILE_DIR:enc-vfw>/enc-vfw.pdb"
|
||
|
|
"${PROJECT_SOURCE_DIR}/#Build/obs-plugins/${BITS}bit/enc-vfw.pdb"
|
||
|
|
)
|
||
|
|
endif()
|