CMakeLists.txt 4.1 KB
Newer Older
P
Palana 已提交
1 2 3 4 5
if(APPLE)
	cmake_minimum_required(VERSION 2.8.12)
else()
	cmake_minimum_required(VERSION 2.8.11)
endif()
B
BtbN 已提交
6 7 8 9 10

project(obs-studio)

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")

11 12
include(ObsHelpers)

B
BtbN 已提交
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
if(NOT _one_time_action_done)
	if(MSVC)
		file(GENERATE
			OUTPUT "${CMAKE_BINARY_DIR}/ALL_BUILD.vcxproj.user"
			INPUT "${CMAKE_SOURCE_DIR}/cmake/ALL_BUILD.vcxproj.user.in"
			CONDITION ${MSVC})
	endif()
	set(_one_time_action_done TRUE CACHE INTERNAL "")
endif()

if(NOT CMAKE_BUILD_TYPE)
        set(CMAKE_BUILD_TYPE RelWithDebInfo)
endif()

find_package(CXX11 REQUIRED)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX11_FLAGS}")

if(${CMAKE_C_COMPILER_ID} MATCHES "Clang" OR ${CMAKE_CXX_COMPILER_ID} MATCHES "Clang")
	set(CMAKE_COMPILER_IS_CLANG TRUE)
endif()

if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANG)
	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-function -Wno-unused-parameter -Wall -Wextra")
	set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99 -Wno-unused-function -Wno-unused-parameter -Wall -Wextra")
	
	option(USE_LIBC++ "Use libc++ instead of libstdc++" ${APPLE})
	if(USE_LIBC++)
		set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
	endif()
endif()

if(WIN32)
	add_definitions(-DUNICODE -D_UNICODE)
endif()

if(APPLE)
	set(CMAKE_MACOSX_RPATH TRUE)
	set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
B
BtbN 已提交
51 52 53 54
	list(APPEND CMAKE_INSTALL_RPATH "@loader_path/" "@executable_path/")
elseif(UNIX AND NOT UNIX_STRUCTURE)
	set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
	list(APPEND CMAKE_INSTALL_RPATH "$ORIGIN")
B
BtbN 已提交
55 56
endif()

57 58 59
if(NOT INSTALLER_RUN)
	add_subdirectory(deps)
	add_subdirectory(libobs)
B
BtbN 已提交
60

61 62 63 64
	if(WIN32)
		add_subdirectory(libobs-d3d11)
		add_subdirectory(libobs-d3d9)
	endif()
B
BtbN 已提交
65

66 67 68 69 70 71 72
	add_subdirectory(libobs-opengl)
	add_subdirectory(obs)
	add_subdirectory(plugins)
	add_subdirectory(test)
else()
	obs_generate_multiarch_installer()
endif()
B
BtbN 已提交
73 74 75 76 77

obs_install_additional()

# CPack Configuration

78
if(APPLE AND NOT CPACK_GENERATOR)
B
BtbN 已提交
79
	set(CPACK_GENERATOR "Bundle")
80 81
elseif(WIN32 AND NOT CPACK_GENERATOR)
	set(CPACK_GENERATOR "NSIS" "ZIP")
B
BtbN 已提交
82 83 84 85 86 87 88 89 90 91
endif()

set(CPACK_PACKAGE_NAME "OBS Studio")
set(CPACK_PACKAGE_VENDOR "obsproject.com")
set(CPACK_PACKAGE_VERSION "0.0.1")
set(CPACK_PACKAGE_VERSION_MAJOR "0")
set(CPACK_PACKAGE_VERSION_MINOR "0")
set(CPACK_PACKAGE_VERSION_PATCH "1")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "OBS Studio - Multi-platform broadcasting software")

92
if(INSTALLER_RUN)
93 94 95 96 97 98 99
	file(TO_NATIVE_PATH "${OBS_EXECUTABLE32_DESTINATION}/obs" _obs32)
	file(TO_NATIVE_PATH "${OBS_EXECUTABLE64_DESTINATION}/obs" _obs64)

	#Workaround a cmake bug, remove when fixed
	string(REPLACE "\\" "\\\\" _obs32 "${_obs32}")
	string(REPLACE "\\" "\\\\" _obs64 "${_obs64}")

100
	set(CPACK_PACKAGE_EXECUTABLES
101 102
		"${_obs32}" "OBS Studio (32bit)"
		"${_obs64}" "OBS Studio (64bit)")
103
	set(CPACK_CREATE_DESKTOP_LINKS
104 105
		"${_obs32}"
		"${_obs64}")
106
else()
107 108 109 110 111 112 113
	file(TO_NATIVE_PATH "${OBS_EXECUTABLE_DESTINATION}/obs" _obs)

	#Workaround a cmake bug, remove when fixed
	string(REPLACE "\\" "\\\\" _obs "${_obs}")

	set(CPACK_PACKAGE_EXECUTABLES "${_obs}" "OBS Studio")
	set(CPACK_CREATE_DESKTOP_LINKS "${_obs}")
114
endif()
B
BtbN 已提交
115 116 117 118 119 120 121 122 123 124

set(CPACK_BUNDLE_NAME "OBS Studio")
set(CPACK_BUNDLE_PLIST "${CMAKE_SOURCE_DIR}/cmake/osxbundle/Info.plist")
set(CPACK_BUNDLE_ICON "${CMAKE_SOURCE_DIR}/cmake/osxbundle/obs.icns")
set(CPACK_BUNDLE_STARTUP_COMMAND "${CMAKE_SOURCE_DIR}/cmake/osxbundle/obslaunch.sh")

set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON)
set(CPACK_NSIS_EXECUTABLES_DIRECTORY ".")
set(CPACK_NSIS_MODIFY_PATH ON)

125
if(INSTALLER_RUN)
126 127 128
	set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "OBSStudio")
	set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES")
	set(CPACK_PACKAGE_FILE_NAME "obs-studio")
129 130 131 132
elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)
	if(WIN32)
		set(CPACK_PACKAGE_NAME "OBS Studio (64bit)")
	endif()
133 134 135
	set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "OBSStudio64")
	set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64")
	set(CPACK_PACKAGE_FILE_NAME "obs-studio-x64")
B
BtbN 已提交
136 137 138 139
else()
	if(WIN32)
		set(CPACK_PACKAGE_NAME "OBS Studio (32bit)")
	endif()
140 141 142
	set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "OBSStudio32")
	set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES32")
	set(CPACK_PACKAGE_FILE_NAME "obs-studio-x86")
B
BtbN 已提交
143 144 145
endif()

include(CPack)