Skip to content

Commit 40db1bf

Browse files
committed
add more binaries from dependencies to a lib target too
1 parent d2760d3 commit 40db1bf

File tree

3 files changed

+110
-26
lines changed

3 files changed

+110
-26
lines changed

cmake/Modules/CopyMSVCBins.cmake

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -172,8 +172,8 @@ set(QtCore_DIR "${Qt6Core_DIR}")
172172
cmake_path(SET QtCore_DIR_NORM NORMALIZE "${QtCore_DIR}/../../..")
173173
set(QtCore_BIN_DIR "${QtCore_DIR_NORM}bin")
174174
set(QtCore_PLUGIN_DIR "${QtCore_DIR_NORM}plugins")
175-
obs_status(STATUS "QtCore_BIN_DIR: ${QtCore_BIN_DIR}")
176-
obs_status(STATUS "QtCore_PLUGIN_DIR: ${QtCore_PLUGIN_DIR}")
175+
message(STATUS "QtCore_BIN_DIR: ${QtCore_BIN_DIR}")
176+
message(STATUS "QtCore_PLUGIN_DIR: ${QtCore_PLUGIN_DIR}")
177177

178178
file(
179179
GLOB
@@ -265,39 +265,39 @@ foreach(
265265
endif()
266266
endforeach()
267267

268-
obs_status(STATUS "FFmpeg files: ${FFMPEG_BIN_FILES}")
269-
obs_status(STATUS "x264 files: ${X264_BIN_FILES}")
270-
obs_status(STATUS "Libfdk files: ${LIBFDK_BIN_FILES}")
271-
obs_status(STATUS "Freetype files: ${FREETYPE_BIN_FILES}")
272-
obs_status(STATUS "rnnoise files: ${RNNOISE_BIN_FILES}")
273-
obs_status(STATUS "curl files: ${CURL_BIN_FILES}")
274-
obs_status(STATUS "lua files: ${LUA_BIN_FILES}")
275-
obs_status(STATUS "ssl files: ${SSL_BIN_FILES}")
276-
obs_status(STATUS "zlib files: ${ZLIB_BIN_FILES}")
277-
obs_status(STATUS "Qt Debug files: ${QT_DEBUG_BIN_FILES}")
278-
obs_status(STATUS "Qt Debug Platform files: ${QT_DEBUG_PLAT_BIN_FILES}")
279-
obs_status(STATUS "Qt Debug Styles files: ${QT_DEBUG_STYLES_BIN_FILES}")
280-
obs_status(STATUS "Qt Debug Iconengine files: ${QT_DEBUG_ICONENGINE_BIN_FILES}")
281-
obs_status(STATUS "Qt Debug Imageformat files: ${QT_DEBUG_IMAGEFORMATS_BIN_FILES}")
282-
obs_status(STATUS "Qt Release files: ${QT_BIN_FILES}")
283-
obs_status(STATUS "Qt Release Platform files: ${QT_PLAT_BIN_FILES}")
284-
obs_status(STATUS "Qt Release Styles files: ${QT_STYLES_BIN_FILES}")
285-
obs_status(STATUS "Qt Release Iconengine files: ${QT_ICONENGINE_BIN_FILES}")
286-
obs_status(STATUS "Qt Release Imageformat files: ${QT_IMAGEFORMATS_BIN_FILES}")
287-
obs_status(STATUS "Qt ICU files: ${QT_ICU_BIN_FILES}")
268+
message(STATUS "FFmpeg files: ${FFMPEG_BIN_FILES}")
269+
message(STATUS "x264 files: ${X264_BIN_FILES}")
270+
message(STATUS "Libfdk files: ${LIBFDK_BIN_FILES}")
271+
message(STATUS "Freetype files: ${FREETYPE_BIN_FILES}")
272+
message(STATUS "rnnoise files: ${RNNOISE_BIN_FILES}")
273+
message(STATUS "curl files: ${CURL_BIN_FILES}")
274+
message(STATUS "lua files: ${LUA_BIN_FILES}")
275+
message(STATUS "ssl files: ${SSL_BIN_FILES}")
276+
message(STATUS "zlib files: ${ZLIB_BIN_FILES}")
277+
message(STATUS "Qt Debug files: ${QT_DEBUG_BIN_FILES}")
278+
message(STATUS "Qt Debug Platform files: ${QT_DEBUG_PLAT_BIN_FILES}")
279+
message(STATUS "Qt Debug Styles files: ${QT_DEBUG_STYLES_BIN_FILES}")
280+
message(STATUS "Qt Debug Iconengine files: ${QT_DEBUG_ICONENGINE_BIN_FILES}")
281+
message(STATUS "Qt Debug Imageformat files: ${QT_DEBUG_IMAGEFORMATS_BIN_FILES}")
282+
message(STATUS "Qt Release files: ${QT_BIN_FILES}")
283+
message(STATUS "Qt Release Platform files: ${QT_PLAT_BIN_FILES}")
284+
message(STATUS "Qt Release Styles files: ${QT_STYLES_BIN_FILES}")
285+
message(STATUS "Qt Release Iconengine files: ${QT_ICONENGINE_BIN_FILES}")
286+
message(STATUS "Qt Release Imageformat files: ${QT_IMAGEFORMATS_BIN_FILES}")
287+
message(STATUS "Qt ICU files: ${QT_ICU_BIN_FILES}")
288288

289289
foreach(BinFile ${ALL_BASE_BIN_FILES})
290-
obs_status(STATUS "copying ${BinFile} to ${CMAKE_SOURCE_DIR}/additional_install_files/exec${_bin_suffix}")
290+
message(STATUS "copying ${BinFile} to ${CMAKE_SOURCE_DIR}/additional_install_files/exec${_bin_suffix}")
291291
file(COPY "${BinFile}" DESTINATION "${CMAKE_SOURCE_DIR}/additional_install_files/exec${_bin_suffix}/")
292292
endforeach()
293293

294294
foreach(BinFile ${ALL_REL_BIN_FILES})
295-
obs_status(STATUS "copying ${BinFile} to ${CMAKE_SOURCE_DIR}/additional_install_files/exec${_bin_suffix}r")
295+
message(STATUS "copying ${BinFile} to ${CMAKE_SOURCE_DIR}/additional_install_files/exec${_bin_suffix}r")
296296
file(COPY "${BinFile}" DESTINATION "${CMAKE_SOURCE_DIR}/additional_install_files/exec${_bin_suffix}r/")
297297
endforeach()
298298

299299
foreach(BinFile ${ALL_DBG_BIN_FILES})
300-
obs_status(STATUS "copying ${BinFile} to ${CMAKE_SOURCE_DIR}/additional_install_files/exec${_bin_suffix}d")
300+
message(STATUS "copying ${BinFile} to ${CMAKE_SOURCE_DIR}/additional_install_files/exec${_bin_suffix}d")
301301
file(COPY "${BinFile}" DESTINATION "${CMAKE_SOURCE_DIR}/additional_install_files/exec${_bin_suffix}d/")
302302
endforeach()
303303

cmake/finders/FindFFmpeg.cmake

Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,24 @@ macro(FFmpeg_find_dll)
189189
set(FFmpeg_${component}_LIBRARY "${FFmpeg_${component}_IMPLIB}")
190190
endif()
191191

192+
if(NOT FFmpeg_FFMPEG_EXECUTABLE)
193+
find_program(
194+
FFmpeg_FFMPEG_EXECUTABLE
195+
NAMES ffmpeg.exe
196+
HINTS ${_implib_path} ${_bin_path}
197+
DOC "Path to ffmpeg.exe"
198+
)
199+
endif()
200+
201+
if(NOT FFmpeg_FFPROBE_EXECUTABLE)
202+
find_program(
203+
FFmpeg_FFPROBE_EXECUTABLE
204+
NAMES ffprobe.exe
205+
HINTS ${_implib_path} ${_bin_path}
206+
DOC "Path to ffprobe.exe"
207+
)
208+
endif()
209+
192210
unset(_implib_path)
193211
unset(_bin_path)
194212
unset(_dll_version)
@@ -275,6 +293,42 @@ if(NOT FFmpeg_avutil_FOUND)
275293
ffmpeg_find_component(avutil)
276294
endif()
277295

296+
if(NOT WIN32)
297+
if(NOT FFmpeg_FFMPEG_EXECUTABLE)
298+
find_program(
299+
FFmpeg_FFMPEG_EXECUTABLE
300+
NAMES ffmpeg
301+
DOC "Path to ffmpeg (non-Windows fallback)"
302+
)
303+
endif()
304+
305+
if(NOT FFmpeg_FFPROBE_EXECUTABLE)
306+
find_program(
307+
FFmpeg_FFPROBE_EXECUTABLE
308+
NAMES ffprobe
309+
DOC "Path to ffprobe (non-Windows fallback)"
310+
)
311+
endif()
312+
endif()
313+
314+
if(FFmpeg_FFMPEG_EXECUTABLE AND NOT TARGET FFmpeg::ffmpegexe)
315+
add_executable(FFmpeg::ffmpegexe IMPORTED)
316+
set_target_properties(FFmpeg::ffmpegexe
317+
PROPERTIES
318+
IMPORTED_LOCATION "${FFmpeg_FFMPEG_EXECUTABLE}"
319+
)
320+
endif()
321+
322+
if(FFmpeg_FFPROBE_EXECUTABLE AND NOT TARGET FFmpeg::ffprobeexe)
323+
add_executable(FFmpeg::ffprobeexe IMPORTED)
324+
set_target_properties(FFmpeg::ffprobeexe
325+
PROPERTIES
326+
IMPORTED_LOCATION "${FFmpeg_FFPROBE_EXECUTABLE}"
327+
)
328+
endif()
329+
330+
mark_as_advanced(FFmpeg_FFMPEG_EXECUTABLE FFmpeg_FFPROBE_EXECUTABLE)
331+
278332
if(EXISTS "${FFmpeg_avutil_INCLUDE_DIR}/libavutil/ffversion.h")
279333
file(STRINGS "${FFmpeg_avutil_INCLUDE_DIR}/libavutil/ffversion.h" _version_string
280334
REGEX "^.*FFMPEG_VERSION[ \t]+\"n?[0-9a-z\\~.-]+\"[ \t]*$")
@@ -342,4 +396,4 @@ include(FeatureSummary)
342396
set_package_properties(
343397
FFmpeg PROPERTIES
344398
URL "https://www.ffmpeg.org"
345-
DESCRIPTION "A complete, cross-platform solution to record, convert and stream audio and video.")
399+
DESCRIPTION "A complete, cross-platform solution to record, convert, and stream audio/video.")

libobs/cmake/os-windows.cmake

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,3 +70,33 @@ target_link_libraries(
7070
target_link_options(libobs PRIVATE /IGNORE:4098 /SAFESEH:NO)
7171

7272
set_target_properties(libobs PROPERTIES PREFIX "" OUTPUT_NAME "obs")
73+
74+
if(NOT ENABLE_UI)
75+
set(DEP_BINARIES
76+
$<TARGET_FILE:FFmpeg::avcodec>
77+
$<TARGET_FILE:FFmpeg::avformat>
78+
$<TARGET_FILE:FFmpeg::avutil>
79+
$<TARGET_FILE:FFmpeg::swscale>
80+
$<TARGET_FILE:FFmpeg::swresample>
81+
$<TARGET_FILE:FFmpeg::avfilter>
82+
$<TARGET_FILE:FFmpeg::avdevice>
83+
84+
$<TARGET_FILE:FFmpeg::ffmpegexe>
85+
$<TARGET_FILE:FFmpeg::ffprobeexe>
86+
87+
$<TARGET_FILE:Libx264::Libx264>
88+
$<TARGET_FILE:ZLIB::ZLIB>
89+
)
90+
91+
foreach(DEP_BINARY ${DEP_BINARIES})
92+
message(STATUS "Adding custom command to copy ${DEP_BINARY} to ${OBS_EXECUTABLE_DESTINATION}")
93+
94+
add_custom_command(TARGET libobs POST_BUILD
95+
COMMAND "${CMAKE_COMMAND}" -E echo "Copying dependencies binaries ${DEP_BINARY} to ${OBS_EXECUTABLE_DESTINATION}"
96+
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${DEP_BINARY}" "${OBS_EXECUTABLE_DESTINATION}"
97+
COMMENT "."
98+
VERBATIM COMMAND_EXPAND_LISTS)
99+
endforeach()
100+
101+
install(FILES ${DEP_BINARIES} DESTINATION ${OBS_EXECUTABLE_DESTINATION})
102+
endif()

0 commit comments

Comments
 (0)