本文主要介紹VC++ 2017編譯webrtc m76版本參數配置,具體代碼獲取流程請自行閱讀webrtc官方文檔:https://webrtc.org/native-code/development/,這里不做展開
先貼出完整的gn參數
1 gn gen --target=x64 --args="symbol_level=0 is_clang = true use_custom_libcxx = false use_rtti=true rtc_include_tests=false rtc_libvpx_build_vp9=true enable_iterator_debugging=true symbol_level=0 proprietary_codecs=true use_openh264=true ffmpeg_branding=\"Chrome\" treat_warnings_as_errors=false" out/x64_debug
下面對參數做完整解釋
openh264支持
如下這四個參數用於開啟內置openh264編解碼器支持,缺一不可。
is_clang = true proprietary_codecs=true use_openh264=true ffmpeg_branding=\"Chrome\"
1,由於ffmpeg使用vc++編譯編譯會有問題,因此必須強制使用clang,因此打開is_clang=true
2, 打開openh264需同時打開priorietary_codecs, use_openh264這兩個開關,同時設置ffmpet_branding="chrome"
不使用內置的libcxx
webrtc默認使用自帶的libcxx作為默認的c++標准庫,如果不去除內置libcxx引用,鏈接時將與vc++的libcxx沖突。需加入use_custom_libcxx = false去除libcxx集成
開啟rtti
默認webrtc不開啟rtti,如果在代碼中使用typeid將引起鏈接失敗
開啟enable_iteartor_debuging
默認webrtc這個標記為false,而vc++的debug版本默認為true,如果不增加這個開關,則需要在項目中手動關閉iteartor_debuging這個特性
支持vp9
默認webrtc選項是不帶vp9支持的,需增加rtc_libvpx_build_vp9=true才能支持vp9的編解碼
降低符號等級
symbol_level=0
默認webrtc編譯出來的庫打包了符號表,所以特別大,使用這個命令可以降低符號等級,減少編譯出來的庫的大小
項目需添加的宏
使用這些編譯選項生成的webrtc庫即可被項目使用,但編譯的時候需打開額外兩個宏
-DNOMINMAX -DWEBRTC_WIN
由於webrtc內部使用的min,max函數與windows頭文件的定義沖突,會引發編譯錯誤,增加NOMINMAX可以解決這個問題
此外,需增加WEBRTC_WIN聲明是windows平台,最后,如果需要使用openssl符號,還要增加
WIN32_LEAN_AND_MEAN
同時導出openssl頭文件