实际版本开发时,需要将webrtc的lib合入自己特定的工程库,这里记录一下合入过程,便于后续版本升级webrtc版本新建工程时参考。
PC机:windows 10
VS版本:Microsoft Visual Studio Enterprise 2019
编译OKwebrtc库,使用编译命令行为
gn gen out/Release --args="target_os=\"win\" target_cpu=\"x64\" is_debug=false rtc_use_h264=true is_component_ffmpeg=true ffmpeg_branding=\"Chrome\" enable_libaom=false gtest_enable_absl_printers=false libyuv_include_tests=false rtc_include_tests=false is_component_build=false rtc_enable_protobuf=true use_custom_libcxx=false use_custom_libcxx_for_host=false" --ide=vs2019
若是版本不支持Clang,可以使用如下命令行
gn gen out/Release --args="target_os=\"win\" target_cpu=\"x64\" is_debug=false is_clang=false use_lld=false enable_libaom=false gtest_enable_absl_printers=false libyuv_include_tests=false rtc_include_tests=false is_component_build=false rtc_enable_protobuf=true" --ide=vs2019
webrtc默认编译器是Clang,所以使用VS进行编译时,需要在VS中增加Clang工具。
若不想在VS下使用Clang,可以在webrtc编译命令行中增加is_clang=false use_lld=false。
但是使用is_clang=false use_lld=false命令参数,webrtc不能使用H264功能,因为H264的解码调用的是ffmpeg的264解码器,编ffmpeg必须使用clang编译器。谷歌也在尝试ffmpeg使用Clang编译,其他程序使用CL编译,但是现在这个问题单还是Open状态,目前还没有解决。
https://bugs.chromium.org/p/webrtc/issues/detail?id=9213
由于VS中自带的Clang有可能与webrtc工程的Clang版本不匹配,最好在VS中使用webrtc的Clang编译器。配置方法如下:
1、在平台工具集里面,选择LLVM
2、配置LLVM执行文件路径。
修改..\src\build\config\win路径下BUILD.gn配置文件与VS保持一致
备注:选择MT不用拷贝系统运行期库,但是生成文件会比较大。MD,生成文件比较小,但是需要拷贝一些系统文件。
根据webrtc编译输出文件..\src\out\Release\obj\examples路径下的peerconnection_client.ninja配置VS工程参数。
1、按照配置文件的-I参数,配置VS的include路径
备注:这里gen是webrtc编译生成的文件。在..\src\out\Release\gen路径下。
2、按照配置文件的-D参数,配置VS的预处理器定义
3、修改webrtc/BUILD.gn文件,让webrtc.lib包含必须模块,保证我们只连接webrtc.lib就可以编译通过。
备注:
1、需配置webrtc编译参数is_component_build=false,保证仅仅引用lib静态库。
子系统配置:
https://chromium.googlesource.com/chromium/src/+/master/docs/clang.md