Skip to content

Commit 13faf3c

Browse files
committed
[ZH][LINUX][CMAKE] Add option to enable FFmpeg support (#714)
1 parent 285dee9 commit 13faf3c

File tree

4 files changed

+25
-14
lines changed

4 files changed

+25
-14
lines changed

GeneralsMD/Code/GameEngineDevice/CMakeLists.txt

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -229,18 +229,20 @@ target_link_libraries(z_gameenginedevice PUBLIC
229229
z_gameengine
230230
)
231231

232-
# FFmpeg
233-
find_package(FFMPEG)
232+
if(RTS_BUILD_OPTION_FFMPEG)
233+
find_package(FFMPEG REQUIRED)
234234

235-
if(FFMPEG_FOUND)
236-
target_sources(z_gameenginedevice PRIVATE
237-
Include/VideoDevice/FFmpeg/FFmpegFile.h
238-
Include/VideoDevice/FFmpeg/FFmpegVideoPlayer.h
239-
Source/VideoDevice/FFmpeg/FFmpegFile.cpp
240-
Source/VideoDevice/FFmpeg/FFmpegVideoPlayer.cpp
241-
)
235+
if(FFMPEG_FOUND)
236+
target_sources(z_gameenginedevice PRIVATE
237+
Include/VideoDevice/FFmpeg/FFmpegFile.h
238+
Include/VideoDevice/FFmpeg/FFmpegVideoPlayer.h
239+
Source/VideoDevice/FFmpeg/FFmpegFile.cpp
240+
Source/VideoDevice/FFmpeg/FFmpegVideoPlayer.cpp
241+
)
242242

243-
target_include_directories(z_gameenginedevice PRIVATE ${FFMPEG_INCLUDE_DIRS})
244-
target_link_directories(z_gameenginedevice PRIVATE ${FFMPEG_LIBRARY_DIRS})
245-
target_link_libraries(z_gameenginedevice PRIVATE ${FFMPEG_LIBRARIES})
243+
target_include_directories(z_gameenginedevice PRIVATE ${FFMPEG_INCLUDE_DIRS})
244+
target_link_directories(z_gameenginedevice PRIVATE ${FFMPEG_LIBRARY_DIRS})
245+
target_link_libraries(z_gameenginedevice PRIVATE ${FFMPEG_LIBRARIES})
246+
target_compile_definitions(z_gameenginedevice PUBLIC RTS_HAS_FFMPEG)
247+
endif()
246248
endif()

GeneralsMD/Code/GameEngineDevice/Include/W3DDevice/GameClient/W3DGameClient.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,9 @@
4949
#include "W3DDevice/GameClient/W3DGameFont.h"
5050
#include "W3DDevice/GameClient/W3DDisplayStringManager.h"
5151
#include "VideoDevice/Bink/BinkVideoPlayer.h"
52+
#ifdef RTS_HAS_FFMPEG
53+
#include "VideoDevice/FFmpeg/FFmpegVideoPlayer.h"
54+
#endif
5255
#include "Win32Device/GameClient/Win32DIKeyboard.h"
5356
#include "Win32Device/GameClient/Win32DIMouse.h"
5457
#include "Win32Device/GameClient/Win32Mouse.h"
@@ -111,8 +114,11 @@ class W3DGameClient : public GameClient
111114

112115
/// Manager for display strings
113116
virtual DisplayStringManager *createDisplayStringManager( void ) { return NEW W3DDisplayStringManager; }
114-
117+
#ifdef RTS_HAS_FFMPEG
118+
virtual VideoPlayerInterface *createVideoPlayer( void ) { return NEW FFmpegVideoPlayer; }
119+
#else
115120
virtual VideoPlayerInterface *createVideoPlayer( void ) { return NEW BinkVideoPlayer; }
121+
#endif
116122
/// factory for creating the TerrainVisual
117123
virtual TerrainVisual *createTerrainVisual( void ) { return NEW W3DTerrainVisual; }
118124

cmake/config-build.cmake

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ option(RTS_BUILD_OPTION_INTERNAL "Build code with the \"Internal\" configuration
77
option(RTS_BUILD_OPTION_PROFILE "Build code with the \"Profile\" configuration." OFF)
88
option(RTS_BUILD_OPTION_DEBUG "Build code with the \"Debug\" configuration." OFF)
99
option(RTS_BUILD_OPTION_ASAN "Build code with Address Sanitizer." OFF)
10+
option(RTS_BUILD_OPTION_FFMPEG "Enable FFmpeg support" OFF)
1011

1112
if(NOT RTS_BUILD_ZEROHOUR AND NOT RTS_BUILD_GENERALS)
1213
set(RTS_BUILD_ZEROHOUR TRUE)
@@ -21,6 +22,7 @@ add_feature_info(InternalBuild RTS_BUILD_OPTION_INTERNAL "Building as an \"Inter
2122
add_feature_info(ProfileBuild RTS_BUILD_OPTION_PROFILE "Building as a \"Profile\" build")
2223
add_feature_info(DebugBuild RTS_BUILD_OPTION_DEBUG "Building as a \"Debug\" build")
2324
add_feature_info(AddressSanitizer RTS_BUILD_OPTION_ASAN "Building with address sanitizer")
25+
add_feature_info(FFmpegSupport RTS_BUILD_OPTION_FFMPEG "Building with FFmpeg support")
2426

2527
if(RTS_BUILD_ZEROHOUR)
2628
option(RTS_BUILD_ZEROHOUR_TOOLS "Build tools for Zero Hour" ON)

vcpkg.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"$schema": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg.schema.json",
33
"builtin-baseline": "b02e341c927f16d991edbd915d8ea43eac52096c",
44
"dependencies": [
5-
"zlib"
5+
"zlib",
6+
"ffmpeg"
67
]
78
}

0 commit comments

Comments
 (0)