webrtc中peerconnection_client生成vs工程文件

下面是将peerconnection_client从整个webrtc工程文件中分离出来的过程记录

一 webrtc项目的本地编译

生成Ninja配置文件
gn gen --target=x64 --args=“is_clang = false use_lld=false use_custom_libcxx = false use_rtti=true rtc_include_tests=false enable_iterator_debugging=true symbol_level=0 is_component_build=false” --ide=vs2019 out/x64_debug_20210212

编译
ninja -C out/x64_debug_20210212
编译的debug版本的,ide用的是vs2019,我的webrtc的版本是2019年4月份的,69

二 创建桌面应用程序

webrtc中peerconnection_client生成vs工程文件_第1张图片这里要创建空的桌面项目,而不是控制台项目。
然后将webrtcDemo中的peerconnection_client的源文件复制到创建的vs项目中
webrtc中peerconnection_client生成vs工程文件_第2张图片
vs工程文件
webrtc中peerconnection_client生成vs工程文件_第3张图片

三 配置vs项目的属性

根据peerconnection_client.ninja文件配置项目属性,右键项目,打开属性页。

设置包含目录

webrtc中peerconnection_client生成vs工程文件_第4张图片
根据Ninja配置文件中include_dirs设置包含的头文件目录,这里是我的
G:\webrtc\code\src\out\x64_debug_20210212\gen
G:\webrtc\code\src
G:\webrtc\code\src\third_party\abseil-cpp
G:\webrtc\code\src\third_party\libyuv\include
G:\webrtc\code\src\third_party\jsoncpp\overrides\include
G:\webrtc\code\src\third_party\jsoncpp\source\include

添加预处理器

在这里插入图片描述_DEBUG
_WINDOWS
USE_AURA=1
NO_TCMALLOC
FULL_SAFE_BROWSING
SAFE_BROWSING_CSD
SAFE_BROWSING_DB_LOCAL
CHROMIUM_BUILD
_HAS_EXCEPTIONS=0
__STD_C
_CRT_RAND_S
_CRT_SECURE_NO_DEPRECATE
_SCL_SECURE_NO_DEPRECATE
CERT_CHAIN_PARA_HAS_EXTRA_FIELDS
PSAPI_VERSION=2
WIN32
_SECURE_ATL
WIN32_LEAN_AND_MEAN
NOMINMAX
_UNICODE
UNICODE
NTDDI_VERSION=NTDDI_WIN10_RS2
_WIN32_WINNT=0x0A00
WINVER=0x0A00
DYNAMIC_ANNOTATIONS_ENABLED=1
WTF_USE_DYNAMIC_ANNOTATIONS=1
WEBRTC_ENABLE_PROTOBUF=1
WEBRTC_INCLUDE_INTERNAL_AUDIO_DEVICE
RTC_ENABLE_VP9
HAVE_SCTP
WEBRTC_NON_STATIC_TRACE_EVENT_HANDLERS=0
WEBRTC_WIN
ABSL_ALLOCATOR_NOTHROW=1
HAVE_WEBRTC_VIDEO

设置运行库

webrtc中peerconnection_client生成vs工程文件_第5张图片选择MTd不用拷贝系统运行期库,但是生成文件会比较大。MDd,生成文件比较小,但是需要拷贝一些系统文件
webrtc debug版本默认的是MTd release版本默认的是MT

设置附加库

我用的是绝对路径,也可以将相关的库文件添加到项目本身目录中,设置相对路径
webrtc中peerconnection_client生成vs工程文件_第6张图片

添加链接库依赖项

webrtc中peerconnection_client生成vs工程文件_第7张图片
obj/webrtc.lib
obj/third_party/jsoncpp/jsoncpp/json_reader.obj
obj/third_party/jsoncpp/jsoncpp/json_value.obj
obj/third_party/jsoncpp/jsoncpp/json_writer.obj
obj/test/field_trial/field_trial.obj
obj/rtc_base/rtc_json/json.obj
obj/test/video_test_common/test_video_capturer.obj
obj/test/platform_video_capturer/vcm_capturer.obj
advapi32.lib
comdlg32.lib
dbghelp.lib
dnsapi.lib
gdi32.lib
msimg32.lib
odbc32.lib
odbccp32.lib
oleaut32.lib
shell32.lib
shlwapi.lib
user32.lib
usp10.lib
uuid.lib
version.lib
wininet.lib
winmm.lib
winspool.lib
ws2_32.lib
delayimp.lib
kernel32.lib
ole32.lib
crypt32.lib
iphlpapi.lib
secur32.lib
dmoguids.lib
wmcodecdspuuid.lib
amstrmid.lib
msdmo.lib
strmiids.lib

项目依赖的库主要是在peerconnection_client.ninja文件中查找的
在这里插入图片描述和操作系统本身相关的lib很好确定,主要是和webrtc项目相关的库,一直报各种链接错误,LNK2019啥的,不太好确定是哪些,即便把ninja文件中的出现的所有.lib都添加进去,依然是各种链接错误。这里借鉴了PeerConnectionClientDemo(和这里添加的库又有点不同),添加了几个obj文件。
但是其中有一个vcmCaputurer相关的链接错误搞了很久,就是缺少下面两个obj文件
obj/test/video_test_common/test_video_capturer.obj
obj/test/platform_video_capturer/vcm_capturer.obj
这两个obj是后来我自己加上去的
在这里插入图片描述

四 总结

配置项目环境真的是巨坑,需要耐心。webrtc整个项目虽然是宝藏,但是太大了,对于新手真的很不友好,现在从十几G的大项目中分离出来了peerconnection_client,希望能快速上手吧。
webrtc中peerconnection_client生成vs工程文件_第8张图片全部生成成功了,还是很爽的。

参考:
1、https://www.jianshu.com/p/351b29e36243
2、https://my.oschina.net/u/4257773/blog/4559837
3、https://blog.csdn.net/CrystalShaw/article/details/108507064

你可能感兴趣的:(WebRTC,webrtc)