下面是將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
二 創建桌面應用程式
這里要創建空的桌面專案,而不是控制臺專案,
然后將webrtcDemo中的peerconnection_client的源檔案復制到創建的vs專案中

vs工程檔案

三 配置vs專案的屬性
根據peerconnection_client.ninja檔案配置專案屬性,右鍵專案,打開屬性頁,
設定包含目錄

根據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
設定運行庫
選擇MTd不用拷貝系統運行期庫,但是生成檔案會比較大,MDd,生成檔案比較小,但是需要拷貝一些系統檔案
webrtc debug版本默認的是MTd release版本默認的是MT
設定附加庫
我用的是絕對路徑,也可以將相關的庫檔案添加到專案本身目錄中,設定相對路徑

添加鏈接庫依賴項

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,希望能快速上手吧,
全部生成成功了,還是很爽的,
參考:
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/259431.html
標籤:其他
