windows webrtc 编译
下载步骤:
1、使用下载谷歌的源码要F墙,别信网上的各种国内镜像代理,包括学而思和声网的,反正我本人测试都不行。
学而思镜像:https://github.com/webrtc-mirror/mirror
为了能正确下载,我还去关注了他们的微信公共号,操作步骤见网页,
测试结果本地报错:third_party/capatult 这个模块一直下载失败,显示服务器不允许下载未经许可的对象。
声网镜像:https://rtcdeveloper.com/t/topic/14914
测试结果本地报错: src/base src/buildtools src/tools等 一共四个子模块都下载失败。
奉劝大家,别走捷径,他们的镜像可能一般情况下没人去维护吧,花了好多时间还是不行很浪费时间,就中规中矩的翻过去下载,多尝试几次总会成功。
安装好你要翻过去所需要的软件,具体步骤略过。
首先要确保你真正是否翻过去了,尝试打开google,随便搜索下,看看是否正常。
记下代理所用的端口号,我们要用的是http的代理端口,不是sock的。
2、安装depot_tools
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
这个文件夹包含谷歌的多远代码管理工具 gclient
目录下结构:
然后要将这个目录加到系统的path中,方便以后直接使用命令行进行操作。不然执行命令会提示命令不识别。
3、安装python2.7版本 以及 pywin32
下载路径墙内的网打开下载可能会比较慢。
下载路径: https://www.python.org/getit/
下载路径:https://sourceforge.net/projects/pywin32/files/pywin32/Build%20219/
安装完以后把python2.7的安装路径也要加到系统的path路径下。
我本地电脑是这样的:
4、安装VS2019
下载路径: https://visualstudio.microsoft.com/zh-hans/vs/
在装VS的时候要记得装几个模块
1)win10 sdk 10.0.173以上,下面只是参考,其他的可以选装
2)WIN10 SDK还需要安装Debugging Tools,安装步骤为 控制面板 → 程序 → 程序和功能 → 选中“Windows Software Development Kit” → 变更 → Change → 勾选 “Debugging Tools For Windows” → Change。
5、配置环境变量:
DEPOT_TOOLS_UPDATE=0 #不更新depot_tools
DEPOT_TOOLS_WIN_TOOLCHAIN=0 #编译时使用本机VS工具链
GYP_MSVS_VERSION = 2019 #指定VS版本
GYP_MSVS_OVERRIDE_PATH = C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise #vs安装路径,替换成自己的
GYP_GENERATORS=msvs-ninja,ninja #使用ninja编译
http_proxy=http://127.0.0.1:38855 #本机代理端口
https_proxy=http://127.0.0.1:38855 #本机代理端口 这个端口就是本文最上面1那节最后说的端口。
下面这个步骤我不确定是否真的很有必要,为保证万一还是建议做了:
在depot_tools的安装目录下,新建一个文件
文件内容为:
最下面的port是代理端口
新增加一个环境变量 NO_AUTH_BOTO_CONFIG 路径为 G:\webrtc\git_depot\depot_tools\boto.cfg //自己的文件路径
我本地显示如下:
如果在 VS_Toolchain上报错的话 增加环境变量
# 告诉depot_tools使用我们本机的VS进行编译
6、开始下载源码方法有两种:
第一种:
命令行执行:
fetch --nohooks webrtc 这个下载源码时间会很久,下载差不多要9个多G的文件。
执行完可能会报一些错误,这个没关系,你去下载路径下看下文件路径,是不是文件夹都有,这个后面会执行命令更新本地代码。
文件路径大概是这样,然后执行命令:
gclient sync
这一步很关键,这个命令必须执行成功,否则子模块代码拉取的是不完整的。
执行成功如下显示:
如果出现失败,就多执行几次这个命令,或者带上参数执行,gclient sync --force
这个可能会与你的F墙服务器的稳定有关系,失败了报错了不怕,重复执行几次。
如果出现 error server not allow to .......这种的,基本就是你与谷歌的源代码服务器连接失败。如图所示:
如果出现 cd ....(一个文件目录) && git rebase -- (0a423r324aadf24332323) 这种的,去文件目录下,删除 .git文件夹,然后重新执行命令
第二种方法:
git clone https://chromium.googlesource.com/external/webrtc
gclient config https://webrtc.googlesource.com/src.git
gclient sync
先用git下载代码 然后同步config再执行sync
本人测试过 用git的bash和cmd 效果是一样的。
7、编译
先编译windows下:
gn gen out/Default //不带vs工程,编译的只是一些测试工具和demo
gn gen out/project --ide=vs //编译出来带有vs的功能 all.sln
release版本:gn gen out/Release --args="is_debug=false"
ninja -C out/Default
64位debug和release:
gn gen out/Debug --ide=vs2015
gn gen out/Release --ide=vs2015 --args="is_debug=false"
32位debug和release:
gn gen out/Debug_x86 --ide=vs2015 --args="target_cpu=\"x86\""
gn gen out/Release_x86 --ide=vs2015 --args="is_debug=false target_cpu=\"x86\""
//gn gen out/Debug_x86 --ide=vs2015 -args="target_cpu=\"x86\" rtc_include_tests=false rtc_use_h264=true rtc_initialize_ffmpeg=true ffmpeg_branding=\"Chrome\""
如果你已经使用 gn gen 生成过构建文件,想看看这个版本的构建文件都指定了什么参数,可以使用下面命令:
gn args out/Release --list
它会列出所有的 build arguments 和对应的文档,以及当前值。
默认编译的库是MT和MTD的,要想生成-MD的要改源码
change src/build/config/win/BUILD.gn: in the statement config("default_crt") replace
#Desktop Windows: static CRT
configs = [":static_crt"]
to configs = [":dynamic_crt"]
【2021.04.14】1、基于remotes/branch-heads/70 切分支 执行个client sync 拉取依赖后 执行gn的时候 提示要至少使用VS2017以上的版本。
2、65分支 执行ninja的时候 提示 LINK : fatal error LNK1104: 无法打开文件“advapi32.lib” 根据博文
https://www.jianshu.com/p/14ad10b7bcf9
提示要安装 下载Windows 10 SDK,使用10.0.15063版本 win7机器 win sdk 一直安装失败、win10 才安装成功
【2021.05.06】 Exception: No supported Visual Studio can be found. Supported versions are: 16.0(2019), 15.0 (2017).
最新的master分支不支持2017以下的版本了
【2021.05.07】 编译报错提示找不到 mt.exe 解决办法:用everything工具或者在C盘搜下这个mt.exe 会在windows sdk kit的目录下 找到这个文件,找好是32位还是64位 然后复制粘贴到 C盘 windows\\system32目录下