| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235 |
- set_project("AV_Framework")
- set_version("1.0.0")
- set_languages("c++17")
- -- 设置编译模式
- add_rules("mode.debug", "mode.release")
- -- FFmpeg库路径配置 - 支持环境变量和默认路径
- local ffmpeg_path = os.getenv("FFMPEG_PATH") or "E:/AAA/ffmpeg-7.0.2-full_build-shared"
- local ffmpeg_include = ffmpeg_path .. "/include"
- local ffmpeg_lib = ffmpeg_path .. "/lib"
- -- 检查FFmpeg路径是否存在
- if not os.isdir(ffmpeg_include) then
- print("Warning: FFmpeg include directory not found: " .. ffmpeg_include)
- print("Please set FFMPEG_PATH environment variable or update the path in xmake.lua")
- end
- set_runtimes("MD")
- -- 公共FFmpeg配置函数
- function add_ffmpeg_config()
- if is_plat("windows") then
- add_includedirs(ffmpeg_include)
- add_linkdirs(ffmpeg_lib)
- add_links("avcodec", "avformat", "avutil", "swscale", "swresample")
- add_links("avdevice", "avfilter", "postproc")
- else
- add_links("avcodec", "avformat", "avutil", "swscale", "swresample")
- end
- end
- -- 公共基础配置函数
- function add_common_config()
- add_includedirs(".", {public = true})
- set_targetdir("$(buildir)/bin")
- end
- -- 基础库
- target("av_base")
- set_kind("static")
- add_files("code/base/*.cpp")
- add_headerfiles("code/base/*.h")
- add_includedirs(".", {public = true})
-
- -- 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")
- add_files("code/codec/*.cpp")
- add_headerfiles("code/codec/*.h")
- add_includedirs(".", {public = true})
- add_deps("av_base")
-
- -- FFmpeg配置
- add_ffmpeg_config()
- -- 捕获库
- target("av_capture")
- set_kind("static")
- add_files("code/capture/*.cpp")
- add_headerfiles("code/capture/*.h")
- add_includedirs(".", {public = true})
- add_deps("av_base")
-
- -- FFmpeg配置
- add_ffmpeg_config()
- -- 混流库
- target("av_muxer")
- set_kind("static")
- add_files("code/muxer/*.cpp")
- add_headerfiles("code/muxer/*.h")
- add_includedirs(".", {public = true})
- add_deps("av_base")
-
- -- FFmpeg配置
- add_ffmpeg_config()
- -- 工具库
- target("av_utils")
- set_kind("static")
- add_files("code/utils/*.cpp")
- add_headerfiles("code/utils/*.h")
- add_includedirs(".", {public = true})
- add_deps("av_base")
-
- -- FFmpeg配置
- add_ffmpeg_config()
- -- -- 完整的AV框架库
- -- target("av_framework")
- -- set_kind("static")
- -- add_deps("av_base", "av_codec", "av_capture", "av_muxer", "av_utils")
- -- add_includedirs(".", {public = true})
- target("player")
- add_rules("qt.widgetapp")
- add_common_config()
- add_files("integration_example.cpp", {rules = "qt.moc"})
- add_deps("av_base", "av_codec", "av_capture", "av_muxer", "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_basic")
- set_kind("binary")
- add_files("test_basic.cpp")
- add_deps("av_base")
- add_common_config()
-
- -- FFmpeg配置
- add_ffmpeg_config()
- -- 编解码测试程序
- target("test_codec")
- set_kind("binary")
- add_files("test_codec.cpp")
- add_deps("av_codec")
- add_common_config()
-
- -- FFmpeg配置
- add_ffmpeg_config()
- -- 解码器测试程序
- target("test_decoder")
- set_kind("binary")
- add_files("test_decoder.cpp")
- add_deps("av_codec")
- add_common_config()
-
- -- FFmpeg配置
- add_ffmpeg_config()
-
- -- 音频编码器测试程序
- target("test_audio_encoder")
- set_kind("binary")
- add_files("test_audio_encoder.cpp")
- add_deps("av_codec")
- add_common_config()
-
- -- FFmpeg配置
- add_ffmpeg_config()
- -- 窗口采集测试程序
- target("test_window_capture")
- set_kind("binary")
- add_files("test_window_capture.cpp")
- add_deps("av_capture")
- add_common_config()
-
- -- FFmpeg配置
- add_ffmpeg_config()
- -- 工具类测试程序
- target("test_utils")
- set_kind("binary")
- add_files("test_utils.cpp")
- add_deps("av_utils")
- add_common_config()
-
- -- FFmpeg配置
- add_ffmpeg_config()
- -- 混流器测试程序
- target("test_muxer")
- set_kind("binary")
- add_files("test_muxer.cpp")
- add_deps("av_muxer")
- add_common_config()
-
- -- FFmpeg配置
- add_ffmpeg_config()
- -- 音频调试测试程序
- target("test_audio_debug")
- set_kind("binary")
- 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")
- 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")
- 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()
|