編譯過多次,或多或少都會遇到相同問題,好記憶不如爛筆頭,今天動手。。。
文章結構部分照抄別人的,根據自已的步驟稍做修改。
win10,64位
visual studio 2017最新版本
編譯過程中需要,我用的2.7.9版本,需新增到path環境變數。
如果安裝出錯,參考:安裝directx sdk時出現error code:s1023 的解決方案
參照官方文件
前期準備工作,少不了**,配置環境變數
set depot_tools_update=0 #不更新depot_tools
set depot_tools_win_toolchain=0 #編譯時使用本機vs工具鏈
set gyp_msvs_version=2017 #指定vs版本
set gyp_msvs_override_path=「c:\program files (x86)\microsoft visual studio\2017\community #vs安裝路徑,替換成自己的
set gyp_generators=msvs-ninja,ninja #使用ninja編譯
cd depot_tools
./gclient
根據官方文件
mkdir webrtc-checkout
cd webrtc-checkout
fetch --nohooks webrtc
gclient sync
如果**配置有問題,這其中會有報錯
工具gn.exe:位於webrtc-checkout\src\win,這就是為什麼在生成vs解決方案工程的時候提示找不到gn.exe
clang-format.exe:位於webrtc-checkout\src\buildtools\win
isolate.exe:位於webrtc-checkout\src\tools\luci-go\win64
資源位於webrtc-checkout\src\resources
這裡工具比資源重要,有同學可能想到了去其他地方拷貝,但這是下策,因為上面列舉工具和資源是我所知缺少的,至於是否還缺少其他的,我並不知道。
解決方法:執行gclient runhooks(執行一次hook操作),或者執行gclient sync --force(此命令會自動
右,這就是為什麼要確保購買的vps至少有20g流量
cd webrtc-checkout\src
git branch -r #檢視release分支
最新的release分支已經到m74了,然後切換到目標分支並打上標籤。
git checkout -b my_branch refs/remotes/branch-heads/m74
gclient sync
解決方法:新建乙個檔案,http_proxy.boto,放在任意位置,我放到了d:\git\depot_tools中,檔案內容如下:
[boto]
proxy=127.0.0.1
proxy_port = 1080
系統環境變數配置:no_auth_boto_config=d:\git\depot_tools\http_proxy.boto
我個人是喜歡用vs工 程編譯,so...
ps:預設編譯出來是mt or mtd,如果需要編譯md or mdd,起飛=> 修改runtimelibrary型別
//下面一條指令生成vs2017的win32 debug工程
gn gen out/debug --ide=vs2017 --args="is_debug=true target_cpu=\"x86\""
//下面一條指令生成vs2015的win32 release工程
gn gen out/release --ide=vs2017 --args="is_debug=false target_cpu=\"x86\""
//以上方法均建議使用ninja方法編譯,速度快
ninja -c out/debug
//或者
ninja -c out/release
為了讓自己編譯出來的webrtc庫能夠被自己的vs工程使用關鍵是gn生成工程檔案的地方。
webrtc預設的編譯器是clang. 通過她編譯出來的lib有時候我們的vs工程用不了會報如下錯誤:
webrtc.lib : fatal error lnk1136: invalid or corrupt file(只是舉個例子)
所以在使用gn生成工程檔案的時候需要帶上 「is_clang=false 」 這樣的引數。例如:
gn gen out/debug --ide=vs2017 --args="is_debug=true target_cpu=\"x86\" is_clang=false"
去掉單元測試的命令
gn gen --ide=vs out/debug --args="target_winuwp_version=\"8.1\" target_winuwp_family=\"desktop\" use_rtti=true is_clang=false libyuv_include_tests=false rtc_include_tests=false libyuv_include_tests=true rtc_use_h264=true"
4.編譯後庫檔案太散,自動整理指令碼
注: 指令碼應當在webrtc的webrtc目錄的上一級目錄執行 這樣才能對應標頭檔案中的相對路徑關係.
linux cp命令加上parents引數時,可以保持目錄結構
指令碼放在src同級目錄,會在當前目錄生成 inc和lib兩個資料夾
#!/bin/bash
echo $src
echo do teminc
src=`find src/ -name "*.h"`
mkdir teminc
for obj in $src
do #echo "cp header file $obj"
cp --parents $obj teminc/
done
mv ./teminc/src ./inc
rm -rf teminc
echo do lib
mkdir lib
echo do lib debug
cd lib
mkdir debug
cd ..
src=`find src/out/debug/ -name "*.lib"`
for obj in $src
do #echo "cp header file $obj"
cp $obj lib/debug/
done
echo do lib release
cd lib
mkdir release
cd ..
src=`find src/out/release/ -name "*.lib*"`
for obj in $src
do #echo "cp header file $obj"
cp $obj lib/release/
done
乙個簡單的指令碼即可以提取出頭檔案,這個方法同樣適用於提取任意工程的指定型別檔案.
開啟vs developer command 控制台
cd lib/debug
lib.exe /out:libwebrtc.lib *.lib
cd ..
cd lib/release
lib.exe /out:libwebrtc.lib *.lib
應用webrtc庫需要的巨集一般只有三個:nominmax win32_lean_and_mean webrtc_win webrtc交叉編譯
目標 實現webrtc到nanopi上的移植 思路 linux pc機 上進行交叉編譯移植到nanopi上 以下操作是基於pc機上的編譯環境已安裝並且成功編譯過x64linux的webrtc 步驟 進入到src目錄執行 2.構建專案 gn gen out default args target os...
webrtc原始碼編譯
一 編譯所需工具 2.python,建議安裝python2.6 安裝之後,將安裝路徑設定在環境變數path中。在安裝了tortoisesvn msysgit之後,通過cmd命令進入dos介面,在介面輸入 svn check 4.directx sdk 5.windows sdk 7.1 安裝路徑需要...
webrtc編譯注意
depot tools環境變數 path中增加g google depot tools windows kits目錄 set windowssdkdir d windows kits 10 工具鏈相關 set depot tools win toolchain 0 set gyp generator...