01 代码下载
和 chromium 配置完全一致,只是 fetch
参数指定为 webrtc
本次编译采用 4664 分支(版本号96)
fetch --no-history webrtc
cd src
#git checkout -b b4664 remotes/branch-heads/4664
# 4664 可以编译过,没跑起来
git checkout -b b4515 remotes/branch-heads/4515
# 如果下载失败,已经有.gclient文件,可以用下面命令
gclient sync -D --nohooks --with_branch_heads --with_tags --output-json="log.json"
gclient runhooks # 或者 gclient runhooks --force
02 编译选项
02.01 h264直接使用vs2019编译失败
:: 带 h264 或者 ffmpeg 使用vs2019 编译不过,提示找不到 stdatomic.h 头文件。
gn gen out/Debug --ide=vs2019 --args="is_debug=true is_component_build=false is_clang=false rtc_include_tests=false proprietary_codecs=true rtc_use_h264=true use_rtti=true use_custom_libcxx=false treat_warnings_as_errors=false target_os=\"win\" target_cpu=\"x86\" ffmpeg_branding=\"Chrome\""
ninja -C out\Debug
:: 带 h264 或者 ffmpeg 使用vs2019 编译不过,提示找不到 stdatomic.h 头文件。
gn gen out/Release --ide=vs2019 --args="is_debug=false is_component_build=false is_clang=false rtc_include_tests=false proprietary_codecs=true rtc_use_h264=true use_rtti=true use_custom_libcxx=false treat_warnings_as_errors=false target_os=\"win\" target_cpu=\"x86\" ffmpeg_branding=\"Chrome\""
ninja -C out\Release
编译错误,提示找不到 stdatomic.h
头文件。
/Zc:inline /Gw /TC /c ../../third_party/ffmpeg/libavcodec/autorename_libavcodec_utils.c /Foobj/third_party/ffmpeg/ffmpeg_internal/autorename_libavcodec_utils.obj /Fd"obj/third_party/ffmpeg/ffmpeg_internal_c.pdb"
D:\git\oray\chromium\test\src\third_party\ffmpeg\libavcodec\error_resilience.h(23): fatal error C1083: 无法打开包括文件: “stdatomic.h”: No such file or directory
[1702/3928] CC obj/third_party/ffmpeg/ffmpeg_internal/fft_float.obj
D:\git\oray\chromium\test\src\third_party\ffmpeg\libavcodec\fft_template.c(276): warning C4003: 类函数宏的调用“SPLIT_RADIX_PERMUTATION”参数不足
D:\git\oray\chromium\test\src\third_party\ffmpeg\libavcodec\fft_template.c(276): warning C4003: 类函数宏的调用“PROCESS_FFT_PERM_SWAP_LSBS”参数不足
D:\git\oray\chromium\test\src\third_party\ffmpeg\libavcodec\fft_template.c(276): warning C4003: 类函数宏的调用“PROCESS_FFT_PERM_DEFAULT”参数不足
02.02 默认不带h264 和ffmpeg选项,用vs2019可以编译
:: 默认选项可以编译通过
gn gen out/Debug --ide=vs2019 --args="is_debug=true is_component_build=false is_clang=false rtc_include_tests=false use_rtti=true use_custom_libcxx=false treat_warnings_as_errors=false target_os=\"win\" target_cpu=\"x86\""
ninja -C out\Debug
:: 默认选项可以编译通过
gn gen out/Release --ide=vs2019 --args="is_debug=false is_component_build=false is_clang=false rtc_include_tests=false use_rtti=true use_custom_libcxx=false treat_warnings_as_errors=false target_os=\"win\" target_cpu=\"x86\""
ninja -C out/Release
02.03 带h264,ffmpeg选择,使用clang编译
:: ffmpeg 需要使用 clang 编译,即指定 is_clang=true use_lld=true
gn gen ../out/Debug --ide=vs2019 --args="target_os=\"win\" target_cpu=\"x86\" is_debug=true is_component_build=false rtc_include_tests=false use_rtti=true use_custom_libcxx=false treat_warnings_as_errors=false is_clang=true use_lld=true rtc_use_h264=true ffmpeg_branding=\"Chrome\" proprietary_codecs=true"
ninja -C ../out/Debug
:: ffmpeg 需要 clang 编译,即指定 is_clang=true use_lld=true
gn gen ../out/Release --ide=vs2019 --args="target_os=\"win\" target_cpu=\"x86\" is_debug=false is_component_build=false rtc_include_tests=true use_rtti=true use_custom_libcxx=false treat_warnings_as_errors=false is_clang=true use_lld=true rtc_use_h264=true ffmpeg_branding=\"Chrome\" proprietary_codecs=true"
ninja -C ../out/Release
:: ffmpeg 需要使用 clang 编译,即指定 is_clang=true use_lld=true
gn gen ../out/DebugX64 --ide=vs2019 --args="target_os=\"win\" target_cpu=\"x64\" is_debug=true is_component_build=false rtc_include_tests=false use_rtti=true use_custom_libcxx=false treat_warnings_as_errors=false is_clang=true use_lld=true rtc_use_h264=true ffmpeg_branding=\"Chrome\" proprietary_codecs=true"
ninja -C ../out/DebugX64
:: ffmpeg 需要 clang 编译,即指定 is_clang=true use_lld=true
gn gen ../out/ReleaseX64 --ide=vs2019 --args="target_os=\"win\" target_cpu=\"x64\" is_debug=false is_component_build=false rtc_include_tests=true use_rtti=true use_custom_libcxx=false treat_warnings_as_errors=false is_clang=true use_lld=true rtc_use_h264=true ffmpeg_branding=\"Chrome\" proprietary_codecs=true"
ninja -C ../out/ReleaseX64
02.04 取消 windows 编译的 include 显示
默认windows 编译会有很多头文件提示,可以关闭该选项。
:: 很重要的参考资料
gn args --list out\Debug
::去掉显示头文件的包含树
::修改src\build\toolchain\win\BUILD.gn,将/showIncludes删除掉