简述
经过无尽的折磨之后,总结了以下关于
WebRtc
工程在Windows10
下的配置部署经验
环境
webrtc
会自己下载他依赖到的一些东西,并区别于外部安装的同款产品的环境,根据我的了解,大概是通过depot_tools
这个系统环境变量的内容来管理的。
git
python2
Win SDK
在VS里面安装
WIN10 SDK
,在控制面版里面找到程序与功能,进去之后i找到安装的那个SDK
,选择Change
,勾选Debugging Tools For Windows
或者
单独安装
WIN10SDK
,做同样的操作,然后记住安装路径
1 2 |
//示例:单独装的 set WINDOWSSDKDIR=D:\Windows Kits\10 |
git环境
1 2 |
git config --global user.email "aet@test.com" git config --global user.name "wangxu" |
VS环境
需要注意的是,这个环境变量是属于当前打开的那个
cmd
窗口或者cmder
窗口设置的临时变量,如果下一次再配置安装重新打开了一个操作窗口时,就需要重新设置了。除非把这些东西加入到系统环境变量里面,但好像没什么必要。
1 2 3 |
set GYP_MSVS_VERSION=2019 set GYP_MSVS_OVERRIDE_PATH=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community set GYP_GENERATORS=msvs-ninja,ninja |
git镜像仓库
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
git config --global url.http://120.92.49.206:3232/chromiumsrc/webrtc.git.insteadOf https://chromium.googlesource.com/external/webrtc.git git config --global url.http://120.92.49.206:3232/chromiumsrc/base.git.insteadOf https://chromium.googlesource.com/chromium/src/base git config --global url.http://120.92.49.206:3232/chromiumsrc/build.git.insteadOf https://chromium.googlesource.com/chromium/src/build git config --global url.http://120.92.49.206:3232/chromiumsrc/buildtools.git.insteadOf https://chromium.googlesource.com/chromium/src/buildtools git config --global url.http://120.92.49.206:3232/chromiumsrc/gradle.git.insteadOf https://chromium.googlesource.com/external/github.com/gradle/gradle.git git config --global url.http://120.92.49.206:3232/chromiumsrc/ios.git.insteadOf https://chromium.googlesource.com/chromium/src/ios.git git config --global url.http://120.92.49.206:3232/chromiumsrc/testing.git.insteadOf https://chromium.googlesource.com/chromium/src/testing git config --global url.http://120.92.49.206:3232/chromiumsrc/third_party.git.insteadOf https://chromium.googlesource.com/chromium/src/third_party git config --global url.http://120.92.49.206:3232/chromiumsrc/clang-format.git.insteadOf https://chromium.googlesource.com/chromium/llvm-project/cfe/tools/clang-format.git git config --global url.http://120.92.49.206:3232/chromiumsrc/libcxx.git.insteadOf https://chromium.googlesource.com/chromium/llvm-project/libcxx.git git config --global url.http://120.92.49.206:3232/chromiumsrc/libcxxabi.git.insteadOf https://chromium.googlesource.com/chromium/llvm-project/libcxxabi.git git config --global url.http://120.92.49.206:3232/chromiumsrc/libunwind.git.insteadOf https://chromium.googlesource.com/external/llvm.org/libunwind.git git config --global url.http://120.92.49.206:3232/chromiumsrc/android_ndk.git.insteadOf https://chromium.googlesource.com/android_ndk.git git config --global url.http://120.92.49.206:3232/chromiumsrc/android_tools.git.insteadOf https://chromium.googlesource.com/android_tools.git git config --global url.http://120.92.49.206:3232/chromiumsrc/auto.git.insteadOf https://chromium.googlesource.com/external/github.com/google/auto.git git config --global url.http://120.92.49.206:3232/chromiumsrc/catapult.git.insteadOf https://chromium.googlesource.com/catapult.git git config --global url.http://120.92.49.206:3232/chromiumsrc/compact_enc_det.git.insteadOf https://chromium.googlesource.com/external/github.com/google/compact_enc_det.git git config --global url.http://120.92.49.206:3232/chromiumsrc/colorama.git.insteadOf https://chromium.googlesource.com/external/colorama.git git config --global url.http://120.92.49.206:3232/chromiumsrc/depot_tools.git.insteadOf https://chromium.googlesource.com/chromium/tools/depot_tools.git git config --global url.http://120.92.49.206:3232/chromiumsrc/errorprone.git.insteadOf https://chromium.googlesource.com/chromium/third_party/errorprone.git git config --global url.http://120.92.49.206:3232/chromiumsrc/ffmpeg.git.insteadOf https://chromium.googlesource.com/chromium/third_party/ffmpeg.git git config --global url.http://120.92.49.206:3232/chromiumsrc/findbugs.git.insteadOf https://chromium.googlesource.com/chromium/deps/findbugs.git git config --global url.http://120.92.49.206:3232/chromiumsrc/freetype2.git.insteadOf https://chromium.googlesource.com/chromium/src/third_party/freetype2.git git config --global url.http://120.92.49.206:3232/chromiumsrc/harfbuzz.git.insteadOf https://chromium.googlesource.com/external/github.com/harfbuzz/harfbuzz.git git config --global url.http://120.92.49.206:3232/chromiumsrc/gtest-parallel.git.insteadOf https://chromium.googlesource.com/external/github.com/google/gtest-parallel git config --global url.http://120.92.49.206:3232/chromiumsrc/googletest.git.insteadOf https://chromium.googlesource.com/external/github.com/google/googletest.git git config --global url.http://120.92.49.206:3232/chromiumsrc/icu.git.insteadOf https://chromium.googlesource.com/chromium/deps/icu.git git config --global url.http://120.92.49.206:3232/chromiumsrc/jsr-305.git.insteadOf https://chromium.googlesource.com/external/jsr-305.git git config --global url.http://120.92.49.206:3232/chromiumsrc/jsoncpp.git.insteadOf https://chromium.googlesource.com/external/github.com/open-source-parsers/jsoncpp.git git config --global url.http://120.92.49.206:3232/chromiumsrc/junit.git.insteadOf https://chromium.googlesource.com/external/junit.git git config --global url.http://120.92.49.206:3232/chromiumsrc/fuzzer.git.insteadOf https://chromium.googlesource.com/chromium/llvm-project/compiler-rt/lib/fuzzer.git git config --global url.http://120.92.49.206:3232/chromiumsrc/libjpeg_turbo.git.insteadOf https://chromium.googlesource.com/chromium/deps/libjpeg_turbo.git git config --global url.http://120.92.49.206:3232/chromiumsrc/libsrtp.git.insteadOf https://chromium.googlesource.com/chromium/deps/libsrtp.git git config --global url.http://120.92.49.206:3232/chromiumsrc/libvpx.git.insteadOf https://chromium.googlesource.com/webm/libvpx.git git config --global url.http://120.92.49.206:3232/chromiumsrc/libyuv.git.insteadOf https://chromium.googlesource.com/libyuv/libyuv.git git config --global url.http://120.92.49.206:3232/chromiumsrc/linux-syscall-support.git.insteadOf https://chromium.googlesource.com/linux-syscall-support.git git config --global url.http://120.92.49.206:3232/chromiumsrc/mockito.git.insteadOf https://chromium.googlesource.com/external/mockito/mockito.git git config --global url.http://120.92.49.206:3232/chromiumsrc/nasm.git.insteadOf https://chromium.googlesource.com/chromium/deps/nasm.git git config --global url.http://120.92.49.206:3232/chromiumsrc/openh264.git.insteadOf https://chromium.googlesource.com/external/github.com/cisco/openh264 git config --global url.http://120.92.49.206:3232/chromiumsrc/requests.git.insteadOf https://chromium.googlesource.com/external/github.com/kennethreitz/requests.git git config --global url.http://120.92.49.206:3232/chromiumsrc/robolectric.git.insteadOf https://chromium.googlesource.com/external/robolectric.git git config --global url.http://120.92.49.206:3232/chromiumsrc/ub-uiautomator.git.insteadOf https://chromium.googlesource.com/chromium/third_party/ub-uiautomator.git git config --global url.http://120.92.49.206:3232/chromiumsrc/usrsctp.git.insteadOf https://chromium.googlesource.com/external/github.com/sctplab/usrsctp git config --global url.http://120.92.49.206:3232/chromiumsrc/binaries.git.insteadOf https://chromium.googlesource.com/chromium/deps/yasm/binaries.git git config --global url.http://120.92.49.206:3232/chromiumsrc/patched-yasm.git.insteadOf https://chromium.googlesource.com/chromium/deps/yasm/patched-yasm.git git config --global url.http://120.92.49.206:3232/chromiumsrc/tools.git.insteadOf https://chromium.googlesource.com/chromium/src/tools git config --global url.http://120.92.49.206:3232/chromiumsrc/client-py.git.insteadOf https://chromium.googlesource.com/infra/luci/client-py.git git config --global url.http://120.92.49.206:3232/chromiumsrc/boringssl.git.insteadOf https://boringssl.googlesource.com/boringssl.git |
depot_tools
下这个的时候不需要开
VPN
就可以下
1 2 3 4 5 6 7 8 |
//选择一个工程路径存放depot_tools mkdir WebRtc && cd WebRtc git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git //切换分支 cd depot_tools git checkout gitlab |
系统环境变量
将上述depot_tools路径加入到系统环境变量里面,并移动到靠上面的位置
同步代码
在depot_tools统计路径创建一个文件夹,用于存放代码
1 2 3 4 5 6 7 8 9 10 11 |
mkdir webrtc && cd webrtc gclient config --name src https://chromium.googlesource.com/external/webrtc.git@gitlab set CDS_CLANG_BUCKET_OVERRIDE=http://120.92.49.206:3232/chromiumsrc/commondatastorage/raw/master/public/chromium-browser-clang //使用本机的VS编译 set DEPOT_TOOLS_WIN_TOOLCHAIN=0 gclient sync --patch-ref=https://chromium.googlesource.com/chromium/src/build.git@gitlab //最后这一步,根据我的经验,前面不用开VPN下载,等到卡住的时候,ctrl+C,切断任务,开VPN,gclient synd继续任务,东西非常多,得有耐心 |
环境问题
- 有可能遇到tar相关的系列错误,这个得重启电脑,然后前面的东西,重新配置一边,重新来过
- 有可能遇到
WINDOWSSDKDIR
的问题
生成VS工程方案
进入到
webrtc
下面的src
文件夹里面
1 2 3 |
cd src gn gen --ide=vs2019 out/Default |
关于
gn gen
后面的参数:
--ide=vs2019
--args=""
use_rtti=true
is_clang=false
rtc_build_tools=false
rtc_include_tests=false
rtc_build_examples=false
按理说到这一步应该差不多就能在
out
文件夹成功看到all.sln
了,但是webrtc
这一套解决方案里面涵盖的东西太多了,很多东西不了解,所以也就不可控,如果还是有问题,根据相关提示再行解决。
VS编译问题
打开
all.sln
,对下面的webrtc
进行编译,如果成功,会生成一个webrtc
的静态库,大概有400M
左右。但是可能会遇到问题:
- 如果提示
STL1000
这个错误,说是clang
版本有问题,那就要重新编我们的VS工程了,这次编的时候,要在--args=""
里面,添加上is_clang=false
,为什么会出现这样的错误,我们的VS里面有clang的东西的,而且版本肯定也是比较新的版本的。原因大概是配置环境的不匹配问题导致的,比如,使用Mingw
和clang
去编的话可能就没问题,那使用VS
来编,又指定了clang
(从这里可以看出,webrtc
的工程默认配置里面大概是默认用clang
的),于是他在版本验证的时候没有通过,导致出现STL1000
这样的问题。
ninja编译
项目带有谷歌自己的构建体系
ninja
来代替了cmake
这种构建体系,据说是比较方便,快速,我用的时候,感觉是不慢的。
1 |
ninja -C out/Default |
本文为原创文章,版权归Aet所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ 2025_03_2503/25
- ♥ 表操作_条件查询-运算符10/23
- ♥ Powershell应用记述06/20
- ♥ Windows调试相关简记12/13
- ♥ Visual Studio:子进程调试相关07/15
- ♥ 汇编记述一08/04