-- AV 框架子模块配置 -- 此文件被主项目通过 includes("AV") 引入 -- 公共基础配置函数 function add_av_common_config() add_includedirs(".", {public = true}) add_includedirs("code", {public = true}) end -- 基础库 target("av_base") set_kind("static") if is_plat("windows") then add_defines("UNICODE", "_UNICODE") end add_files("code/base/*.cpp") add_headerfiles("code/base/*.h") add_av_common_config() -- FFmpeg配置 add_ffmpeg_config() -- 平台特定设置 if is_plat("windows") then add_syslinks("ws2_32", "winmm") else add_syslinks("pthread") end -- 编解码库 target("av_codec") set_kind("static") if is_plat("windows") then add_defines("UNICODE", "_UNICODE") end add_files("code/codec/*.cpp") add_headerfiles("code/codec/*.h") add_av_common_config() add_deps("av_base") -- FFmpeg配置 add_ffmpeg_config() -- 捕获库 target("av_capture") set_kind("static") if is_plat("windows") then add_defines("UNICODE", "_UNICODE") end add_files("code/capture/*.cpp") add_headerfiles("code/capture/*.h") add_av_common_config() add_deps("av_base") -- FFmpeg配置 add_ffmpeg_config() -- 混流库 target("av_muxer") set_kind("static") if is_plat("windows") then add_defines("UNICODE", "_UNICODE") end add_files("code/muxer/*.cpp") add_headerfiles("code/muxer/*.h") add_av_common_config() add_deps("av_base") -- FFmpeg配置 add_ffmpeg_config() -- 工具库 target("av_utils") set_kind("static") if is_plat("windows") then add_defines("UNICODE", "_UNICODE") end add_files("code/utils/*.cpp") add_headerfiles("code/utils/*.h") add_av_common_config() add_deps("av_base") -- FFmpeg配置 add_ffmpeg_config() -- 完整的AV框架库 - 主项目依赖的统一接口 target("av_framework") set_kind("static") if is_plat("windows") then add_defines("UNICODE", "_UNICODE") end add_deps("av_base", "av_codec", "av_capture", "av_muxer", "av_utils") add_av_common_config() -- 导出所有子模块的接口 add_headerfiles("code/**/*.h") -- 播放器库 target("av_player") set_kind("static") if is_plat("windows") then add_defines("UNICODE", "_UNICODE") end add_files("code/player/*.cpp") add_headerfiles("code/player/*.h") add_av_common_config() add_deps("av_base", "av_codec") -- Qt 配置 add_qt_config() -- FFmpeg配置 add_ffmpeg_config() -- 录制器库 target("av_recorder") set_kind("static") if is_plat("windows") then add_defines("UNICODE", "_UNICODE") end add_files("code/recorder/*.cpp") add_headerfiles("code/recorder/*.h") add_av_common_config() add_deps("av_base", "av_codec", "av_capture", "av_muxer") -- Qt 配置 add_qt_config() -- FFmpeg配置 add_ffmpeg_config() -- 基础测试程序 target("test_basic") set_kind("binary") if is_plat("windows") then add_defines("UNICODE", "_UNICODE") end add_files("test_basic.cpp") add_deps("av_base") add_common_config() -- FFmpeg配置 add_ffmpeg_config() -- 编解码测试程序 target("test_codec") set_kind("binary") if is_plat("windows") then add_defines("UNICODE", "_UNICODE") end add_files("test_codec.cpp") add_deps("av_codec") add_common_config() -- FFmpeg配置 add_ffmpeg_config() -- 解码器测试程序 target("test_decoder") set_kind("binary") if is_plat("windows") then add_defines("UNICODE", "_UNICODE") end add_files("test_decoder.cpp") add_deps("av_codec") add_common_config() -- FFmpeg配置 add_ffmpeg_config() -- 音频编码器测试程序 target("test_audio_encoder") set_kind("binary") if is_plat("windows") then add_defines("UNICODE", "_UNICODE") end add_files("test_audio_encoder.cpp") add_deps("av_codec") add_common_config() -- FFmpeg配置 add_ffmpeg_config() -- 窗口采集测试程序 target("test_window_capture") set_kind("binary") if is_plat("windows") then add_defines("UNICODE", "_UNICODE") end add_files("test_window_capture.cpp") add_deps("av_capture") add_common_config() -- FFmpeg配置 add_ffmpeg_config() -- 工具类测试程序 target("test_utils") set_kind("binary") if is_plat("windows") then add_defines("UNICODE", "_UNICODE") end add_files("test_utils.cpp") add_deps("av_utils") add_common_config() -- FFmpeg配置 add_ffmpeg_config() -- 混流器测试程序 target("test_muxer") set_kind("binary") if is_plat("windows") then add_defines("UNICODE", "_UNICODE") end add_files("test_muxer.cpp") add_deps("av_muxer") add_common_config() -- FFmpeg配置 add_ffmpeg_config() -- 音频调试测试程序 target("test_audio_debug") set_kind("binary") if is_plat("windows") then add_defines("UNICODE", "_UNICODE") end add_files("test_audio_debug.cpp") add_deps("av_base", "av_codec", "av_utils") add_files("code/player/player_core_v2.cpp") add_files("code/player/audio_output.cpp") add_files("code/player/thread_manager.cpp") add_headerfiles("code/player/*.h") add_common_config() add_rules("qt.widgetapp") add_frameworks("QtCore", "QtWidgets", "QtMultimedia") -- FFmpeg配置 add_ffmpeg_config() -- 带UI的播放器测试程序 target("test_player_with_ui") add_rules("qt.widgetapp") if is_plat("windows") then add_defines("UNICODE", "_UNICODE") end add_common_config() add_files("test_player_with_ui.cpp", {rules = "qt.moc"}) add_deps("av_base", "av_codec", "av_utils") add_files("code/player/*.cpp") add_headerfiles("code/player/*.h") add_files("code/player/*.h", {rules = "qt.moc"}) add_frameworks("QtNetwork", "QtGui", "QtCore", "QtWidgets", "QtMultimedia", "QtOpenGL") -- FFmpeg配置 add_ffmpeg_config() -- 混流器测试程序 target("test_seek_pause_fixed") set_kind("binary") add_rules("qt.widgetapp") if is_plat("windows") then add_defines("UNICODE", "_UNICODE") end add_files("test_seek_pause_fixed.cpp") add_deps("av_base", "av_codec", "av_utils") add_common_config() add_frameworks("QtNetwork", "QtGui", "QtCore", "QtWidgets", "QtMultimedia", "QtOpenGL") -- FFmpeg配置 add_ffmpeg_config()