-- xmake.lua for AV Framework -- 设置项目信息 set_project("AV_Framework") set_version("1.0.0") set_languages("c++17") -- 设置编译模式 add_rules("mode.debug", "mode.release") -- 设置编译选项 if is_plat("windows") then add_cxflags("/W3", "/utf-8") add_defines("_CRT_SECURE_NO_WARNINGS") else add_cxflags("-Wall", "-Wextra") end -- 添加包依赖 -- add_requires("ffmpeg") -- 注释掉,使用本地FFmpeg库 -- 基础库 target("av_base") set_kind("static") add_files("code/base/*.cpp") add_headerfiles("code/base/*.h") add_includedirs(".", {public = true}) -- Windows特定设置 if is_plat("windows") then add_syslinks("ws2_32", "winmm") -- FFmpeg库链接 add_includedirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/include") add_linkdirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/lib") add_links("avcodec", "avformat", "avutil", "swscale", "swresample") add_links("avdevice", "avfilter", "postproc") 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库链接 if is_plat("windows") then -- Windows下的FFmpeg库路径 add_includedirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/include") add_linkdirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/lib") add_links("avcodec", "avformat", "avutil", "swscale", "swresample") add_links("avdevice", "avfilter", "postproc") else add_links("avcodec", "avformat", "avutil", "swscale", "swresample") end -- -- 捕获库 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库链接 if is_plat("windows") then add_includedirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/include") add_linkdirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/lib") add_links("avcodec", "avformat", "avutil", "swscale", "swresample") add_links("avdevice", "avfilter", "postproc") end -- 混流库 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库链接 if is_plat("windows") then add_includedirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/include") add_linkdirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/lib") add_links("avcodec", "avformat", "avutil", "swscale", "swresample") add_links("avdevice", "avfilter", "postproc") end -- 工具库 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库链接 if is_plat("windows") then add_includedirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/include") add_linkdirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/lib") add_links("avcodec", "avformat", "avutil", "swscale", "swresample") add_links("avdevice", "avfilter", "postproc") end -- -- 完整的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") set_kind("binary") add_rules("qt.static") set_runtimes("MT") add_files("integration_example.cpp", {rules = "qt.moc"}) add_deps("av_base", "av_codec", "av_capture", "av_muxer", "av_utils") add_includedirs(".", {public = true}) add_files("code/player/*.cpp", {rules = "qt.moc"}) add_headerfiles("code/player/*.h", {rules = "qt.moc"}) add_frameworks("QtNetwork", "QtGui", "QtCore", "QtWidgets", "QtMultimedia") -- FFmpeg库链接 if is_plat("windows") then add_includedirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/include") add_linkdirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/lib") add_links("avcodec", "avformat", "avutil", "swscale", "swresample") add_links("avdevice", "avfilter", "postproc") end -- 基础测试程序 target("test_basic") set_kind("binary") add_files("test_basic.cpp") add_deps("av_base") set_targetdir("$(buildir)/bin") -- FFmpeg库链接 if is_plat("windows") then add_includedirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/include") add_linkdirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/lib") add_links("avcodec", "avformat", "avutil", "swscale", "swresample") add_links("avdevice", "avfilter", "postproc") end -- 编解码测试程序 target("test_codec") set_kind("binary") add_files("test_codec.cpp") add_deps("av_codec") set_targetdir("$(buildir)/bin") -- FFmpeg库链接 if is_plat("windows") then add_includedirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/include") add_linkdirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/lib") add_links("avcodec", "avformat", "avutil", "swscale", "swresample") add_links("avdevice", "avfilter", "postproc") end -- 解码器测试程序 target("test_decoder") set_kind("binary") add_files("test_decoder.cpp") add_deps("av_codec") set_targetdir("$(buildir)/bin") -- FFmpeg库链接 if is_plat("windows") then add_includedirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/include") add_linkdirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/lib") add_links("avcodec", "avformat", "avutil", "swscale", "swresample") add_links("avdevice", "avfilter", "postproc") end -- 音频编码器测试程序 target("test_audio_encoder") set_kind("binary") add_files("test_audio_encoder.cpp") add_deps("av_codec") set_targetdir("$(buildir)/bin") -- FFmpeg库链接 if is_plat("windows") then add_includedirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/include") add_linkdirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/lib") add_links("avcodec", "avformat", "avutil", "swscale", "swresample") add_links("avdevice", "avfilter", "postproc") end -- 窗口采集测试程序 target("test_window_capture") set_kind("binary") add_files("test_window_capture.cpp") add_deps("av_capture") set_targetdir("$(buildir)/bin") -- FFmpeg库链接 if is_plat("windows") then add_includedirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/include") add_linkdirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/lib") add_links("avcodec", "avformat", "avutil", "swscale", "swresample") add_links("avdevice", "avfilter", "postproc") end -- 工具类测试程序 target("test_utils") set_kind("binary") add_files("test_utils.cpp") add_deps("av_utils") set_targetdir("$(buildir)/bin") -- FFmpeg库链接 if is_plat("windows") then add_includedirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/include") add_linkdirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/lib") add_links("avcodec", "avformat", "avutil", "swscale", "swresample") add_links("avdevice", "avfilter", "postproc") end -- 混流器测试程序 target("test_muxer") set_kind("binary") add_files("test_muxer.cpp") add_deps("av_muxer") set_targetdir("$(buildir)/bin") -- FFmpeg库链接 if is_plat("windows") then add_includedirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/include") add_linkdirs("E:/AAA/ffmpeg-7.0.2-full_build-shared/lib") add_links("avcodec", "avformat", "avutil", "swscale", "swresample") add_links("avdevice", "avfilter", "postproc") end