CMakeLists.txt 5.6 KB
Newer Older
1 2 3 4 5 6
option(ENABLE_UI "Enables the OBS user interfaces" ON)
if(DISABLE_UI)
	message(STATUS "UI disabled")
	return()
elseif(ENABLE_UI)
	set(FIND_MODE REQUIRED)
B
BtbN 已提交
7
else()
8
	set(FIND_MODE QUIET)
B
BtbN 已提交
9 10
endif()

J
jp9000 已提交
11 12 13 14 15 16
add_subdirectory(obs-frontend-api)

# ----------------------------------------------------------------------------

project(obs)

J
jp9000 已提交
17 18
set(ENABLE_WIN_UPDATER FALSE CACHE BOOL "Enable the windows updater")

19 20 21 22 23
if(DEFINED QTDIR${_lib_suffix})
	list(APPEND CMAKE_PREFIX_PATH "${QTDIR${_lib_suffix}}")
elseif(DEFINED QTDIR)
	list(APPEND CMAKE_PREFIX_PATH "${QTDIR}")
elseif(DEFINED ENV{QTDIR${_lib_suffix}})
B
BtbN 已提交
24 25 26 27 28 29 30 31
	list(APPEND CMAKE_PREFIX_PATH "$ENV{QTDIR${_lib_suffix}}")
elseif(DEFINED ENV{QTDIR})
	list(APPEND CMAKE_PREFIX_PATH "$ENV{QTDIR}")
endif()

set(CMAKE_INCLUDE_CURRENT_DIR TRUE)
set(CMAKE_AUTOMOC TRUE)

32 33 34 35 36 37 38 39
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
	set(_lib_suffix 64)
else()
	set(_lib_suffix 32)
endif()

find_package(Qt5Widgets ${FIND_MODE})

J
jp9000 已提交
40
if(NOT Qt5Widgets_FOUND)
41 42 43 44 45 46 47 48
	if (ENABLE_UI)
		message(FATAL_ERROR "Failed to find Qt5")
	else()
		message(STATUS "Qt5 not found - UI disabled")
		return()
	endif()
endif()

J
jp9000 已提交
49
include_directories(SYSTEM "obs-frontend-api")
50
include_directories(SYSTEM "${CMAKE_SOURCE_DIR}/libobs")
B
BtbN 已提交
51

J
jp9000 已提交
52 53 54 55
find_package(Libcurl REQUIRED)
include_directories(${LIBCURL_INCLUDE_DIRS})
add_definitions(${LIBCURL_DEFINITIONS})

B
BtbN 已提交
56
if(WIN32)
J
jp9000 已提交
57 58
	include_directories(${OBS_JANSSON_INCLUDE_DIRS})

B
BtbN 已提交
59
	set(obs_PLATFORM_SOURCES
J
jp9000 已提交
60
		platform-windows.cpp
J
jp9000 已提交
61 62 63
		win-update/update-window.cpp
		win-update/win-update.cpp
		win-update/win-update-helpers.cpp
J
jp9000 已提交
64
		obs.rc)
J
jp9000 已提交
65 66 67 68 69 70 71 72 73 74 75
	set(obs_PLATFORM_HEADERS
		win-update/update-window.hpp
		win-update/win-update.hpp
		win-update/win-update-helpers.hpp)
	set(obs_PLATFORM_LIBRARIES
		crypt32
		${OBS_JANSSON_IMPORT})

	if(ENABLE_WIN_UPDATER)
		add_definitions(-DENABLE_WIN_UPDATER)
	endif()
B
BtbN 已提交
76 77 78
elseif(APPLE)
	set(obs_PLATFORM_SOURCES
		platform-osx.mm)
79 80

	find_package(AppKit REQUIRED)
B
BtbN 已提交
81
	set(obs_PLATFORM_LIBRARIES ${APPKIT_LIBRARIES})
82

B
BtbN 已提交
83
	add_definitions(-fobjc-arc)
P
Palana 已提交
84 85 86 87 88 89 90 91 92 93 94 95 96 97

	option(ENABLE_SPARKLE_UPDATER "Enables updates via the Sparkle framework (don't forget to update the Info.plist for your .app)" OFF)
	if(ENABLE_SPARKLE_UPDATER)
		find_library(SPARKLE Sparkle)
		include_directories(${SPARKLE})
		set(obs_PLATFORM_SOURCES
			${obs_PLATFORM_SOURCES}
			sparkle-updater.mm)
		set(obs_PLATFORM_LIBRARIES
			${obs_PLATFORM_LIBRARIES}
			${SPARKLE})
		add_definitions(-DUPDATE_SPARKLE=1)
	endif()

B
BtbN 已提交
98
elseif(UNIX)
99 100
        find_package(Qt5X11Extras REQUIRED)

B
BtbN 已提交
101 102 103
	set(obs_PLATFORM_SOURCES
		platform-x11.cpp)

104
        set(obs_PLATFORM_LIBRARIES
B
BtbN 已提交
105
                Qt5::X11Extras)
B
BtbN 已提交
106 107 108 109 110
endif()

set(obs_SOURCES
	${obs_PLATFORM_SOURCES}
	obs-app.cpp
J
jp9000 已提交
111
	api-interface.cpp
B
BtbN 已提交
112
	window-basic-main.cpp
J
jp9000 已提交
113
	window-basic-filters.cpp
J
jp9000 已提交
114
	window-basic-settings.cpp
J
John Bradley 已提交
115
	window-basic-interaction.cpp
116
	window-basic-properties.cpp
J
jp9000 已提交
117
	window-basic-main-outputs.cpp
J
jp9000 已提交
118
	window-basic-source-select.cpp
J
jp9000 已提交
119
	window-basic-main-scene-collections.cpp
120
	window-basic-main-transitions.cpp
J
jp9000 已提交
121
	window-basic-main-dropfiles.cpp
J
jp9000 已提交
122
	window-basic-main-profiles.cpp
J
jp9000 已提交
123
	window-license-agreement.cpp
J
jp9000 已提交
124
	window-basic-status-bar.cpp
J
jp9000 已提交
125
	window-basic-adv-audio.cpp
J
jp9000 已提交
126 127
	window-basic-transform.cpp
	window-basic-preview.cpp
B
BtbN 已提交
128
	window-namedialog.cpp
J
jp9000 已提交
129
	window-log-reply.cpp
J
jp9000 已提交
130
	window-projector.cpp
P
Palana 已提交
131
	window-remux.cpp
132
	properties-view.cpp
133
	focus-list.cpp
134
	menu-button.cpp
J
jp9000 已提交
135
	double-slider.cpp
136
	volume-control.cpp
J
jp9000 已提交
137
	adv-audio-control.cpp
J
jp9000 已提交
138
	item-widget-helpers.cpp
J
jp9000 已提交
139
	visibility-checkbox.cpp
J
jp9000 已提交
140
	vertical-scroll-area.cpp
141
	visibility-item-widget.cpp
H
HomeWorld 已提交
142
	slider-absoluteset-style.cpp
143
	source-list-widget.cpp
144
	qt-display.cpp
J
jp9000 已提交
145
	crash-report.cpp
P
Palana 已提交
146
	hotkey-edit.cpp
P
Palana 已提交
147
	source-label.cpp
J
jp9000 已提交
148
	remote-text.cpp
149
	audio-encoders.cpp
B
BtbN 已提交
150 151 152
	qt-wrappers.cpp)

set(obs_HEADERS
J
jp9000 已提交
153
	${obs_PLATFORM_HEADERS}
B
BtbN 已提交
154 155
	obs-app.hpp
	platform.hpp
156
	window-main.hpp
B
BtbN 已提交
157
	window-basic-main.hpp
J
jp9000 已提交
158
	window-basic-filters.hpp
J
jp9000 已提交
159
	window-basic-settings.hpp
J
John Bradley 已提交
160
	window-basic-interaction.hpp
161
	window-basic-properties.hpp
J
jp9000 已提交
162
	window-basic-main-outputs.hpp
J
jp9000 已提交
163
	window-basic-source-select.hpp
J
jp9000 已提交
164
	window-license-agreement.hpp
J
jp9000 已提交
165
	window-basic-status-bar.hpp
J
jp9000 已提交
166
	window-basic-adv-audio.hpp
J
jp9000 已提交
167 168
	window-basic-transform.hpp
	window-basic-preview.hpp
B
BtbN 已提交
169
	window-namedialog.hpp
J
jp9000 已提交
170
	window-log-reply.hpp
J
jp9000 已提交
171
	window-projector.hpp
P
Palana 已提交
172
	window-remux.hpp
173
	properties-view.hpp
174
	properties-view.moc.hpp
175
	display-helpers.hpp
J
jp9000 已提交
176
	double-slider.hpp
177
	focus-list.hpp
178
	menu-button.hpp
J
jp9000 已提交
179
	mute-checkbox.hpp
180
	volume-control.hpp
J
jp9000 已提交
181
	adv-audio-control.hpp
J
jp9000 已提交
182
	item-widget-helpers.hpp
J
jp9000 已提交
183
	visibility-checkbox.hpp
J
jp9000 已提交
184
	vertical-scroll-area.hpp
185
	visibility-item-widget.hpp
H
HomeWorld 已提交
186
	slider-absoluteset-style.hpp
187
	source-list-widget.hpp
B
BtbN 已提交
188
	qt-display.hpp
J
jp9000 已提交
189
	crash-report.hpp
P
Palana 已提交
190
	hotkey-edit.hpp
P
Palana 已提交
191
	source-label.hpp
J
jp9000 已提交
192
	remote-text.hpp
193
	audio-encoders.hpp
B
BtbN 已提交
194 195 196 197
	qt-wrappers.hpp)

set(obs_UI
	forms/NameDialog.ui
J
jp9000 已提交
198
	forms/OBSLicenseAgreement.ui
J
jp9000 已提交
199
	forms/OBSLogReply.ui
B
BtbN 已提交
200
	forms/OBSBasic.ui
J
jp9000 已提交
201
	forms/OBSBasicTransform.ui
J
jp9000 已提交
202
	forms/OBSBasicFilters.ui
203
	forms/OBSBasicSettings.ui
J
jp9000 已提交
204
	forms/OBSBasicSourceSelect.ui
J
John Bradley 已提交
205
	forms/OBSBasicInteraction.ui
J
jp9000 已提交
206
	forms/OBSUpdate.ui
P
Palana 已提交
207
	forms/OBSRemux.ui)
B
BtbN 已提交
208 209 210 211 212 213 214 215 216 217 218 219

set(obs_QRC
	forms/obs.qrc)

qt5_wrap_ui(obs_UI_HEADERS ${obs_UI})
qt5_add_resources(obs_QRC_SOURCES ${obs_QRC})

add_executable(obs WIN32
	${obs_SOURCES}
	${obs_HEADERS}
	${obs_UI_HEADERS}
	${obs_QRC_SOURCES})
220 221 222 223 224 225 226 227 228 229 230 231 232

if(WIN32)
	if(CMAKE_SIZEOF_VOID_P EQUAL 8)
		set(_output_suffix "64")
	else()
		set(_output_suffix "32")
	endif()

	set_target_properties(obs
		PROPERTIES
			OUTPUT_NAME "obs${_output_suffix}")
endif()

B
BtbN 已提交
233 234
target_link_libraries(obs
	libobs
235
	libff
B
BtbN 已提交
236
	Qt5::Widgets
J
jp9000 已提交
237
	obs-frontend-api
J
jp9000 已提交
238
	${LIBCURL_LIBRARIES}
B
BtbN 已提交
239 240
	${obs_PLATFORM_LIBRARIES})

241 242
define_graphic_modules(obs)

B
BtbN 已提交
243
install_obs_core(obs)
244
install_obs_data(obs data obs-studio)
245 246

if (UNIX AND UNIX_STRUCTURE AND NOT APPLE)
247
	install(FILES dist/obs.desktop DESTINATION ${CMAKE_INSTALL_FULL_DATAROOTDIR}/applications)
248
	install(FILES forms/images/obs.png
249
		DESTINATION ${CMAKE_INSTALL_FULL_DATAROOTDIR}/icons/hicolor/256x256/apps)
250
endif()
251 252

add_subdirectory(frontend-plugins)