標籤:csdn toolchain force google line targe epo blank python
前言
這篇文章的目的在於為你節省生命中寶貴的10小時(甚至更多),或者浪費你10分鐘。作為Google更新頻繁的大型跨平台基礎庫,WebRTC的編譯一直被人稱為噩夢。如果恰巧你偏要在Windows下編譯WebRTC,那麼你最好提前對自己的耐心做充分的評估。
截止目前,我嘗試過中文部落格社區裡幾乎所有的文章,可以說全部失效了。我不知道這篇文章的有效期間有多久,因為webrtc.org社區的傢伙們更新實在太勤奮了!
環境
OS:Microsoft Windows 7 Ultimate 6.1.7601 Service Pack 1 Build 7601
你只需要一台Win7 64機器即可,其他一概用WebRTC提供的就行。如果使用WebRTC內建的編譯工具鏈的話,宿主機器已安裝的Python和VS等等與WebRTC可以做到毫不相關,請不要被某些文章蒙蔽。
開啟VPN
原因你懂的。推薦挑一個快點的TW或JP節點,保持網路通暢。
安裝depot_tools
使用SVN checkout
- http://src.chromium.org/svn/trunk/tools/depot_tools
然後運行depot_tools\gclient.bat,這個指令碼會觸發檢測邏輯,自動下載python276_bin和git-1.9.0.chromium.6_bin。
至此,我假設depot_tools已經安裝完畢。如果沒有,請關閉這個頁面,然後自行Google。
檢出WebRTC代碼
建立一個檔案夾,名叫WebRTC,然後建立一個bat指令碼,寫入:
- set PATH=[你的depot_tools路徑,比如C:\depot_tools];%PATH%
- call gclient.bat config --name src http://webrtc.googlecode.com/svn/trunk
- call gclient.bat sync --force
- set GYP_GENERATORS=msvs
- call python src/webrtc/build/gyp_webrtc -G msvs_version=2013
儲存,然後雙擊執行。接著是漫長的等待,10MB寬頻情況下我等了3個小時。期間控制台會一直顯示still working on src,事實上,這時有幾個G的東西等待下載。官網的說明夠迷惑人的,這個指令碼應該最大程度上簡化了問題。
注意,指令碼中最後一句的意思是產生VS的編譯檔案(.sln),這會觸發gclient自動下載vs2013 express版的核心檔案,所以不需要宿主機器上原先安裝的VS。
指令碼運行完畢後,src目錄下應該出現了許多檔案和目錄,其中就有all.sln。
編譯下載DirectX開發包
DirectX SDK June 2010 http://www.microsoft.com/en-us/download/details.aspx?id=6812 ,解壓備用。
使用VS2013編譯(不推薦)
直接雙擊all.sln開啟,為每一個子模組添加include:DXSDK\Include和library:DXSDK\Lib;depot_tools\win_toolchain\vs2013_files\wdk\lib\Atl\amd64 。
由於模組非常非常多,所以不推薦。
使用Ninja編譯
Ninja是Chromium社區開發的一套build system,不要害怕陌生的Ninja,很快你就會愛上它,並且對VS心生厭倦。
編譯前依然要搞定DirectX SDK,這次直接將DXSDK\Include複製到depot_tools\win_toolchain\vs2013_files\VC\include,DXSDK\Lib複製到depot_tools\win_toolchain\vs2013_files\VC\lib。這麼做簡單粗暴,方便高效。
使用Ninja編譯的話,我也提供一個方便的指令碼:
- @Echo Off
- :: hankcs
- title Hankcs‘s program
- CD\
- %~d0
- CD %~dp0
- set PATH=[你的depot_tools路徑,比如C:\depot_tools];%PATH%
-
- del ninjia.log
- ninja -C out/Release >> ninjia.log
儲存為bat,放到WebRTC\src目錄下執行。
如果遇到了類似下面的錯誤:
- error c2220: warning treated as error - no ‘object‘ file generated
- ...
- ‘utf8‘ codec can‘t decode byte 0xd1 in position 0: invalid continuation byte
請在控制台中修改語言為所示:
然後再次運行,你會發現error c2220神奇地消失了。
運行
一切順利的話,WebRTC\src\out下會出現四個檔案夾,
說明編譯成功。
編譯完了之後我想說,他娘的編譯一下就這麼麻煩,做這玩意得多難啊,人與人的差距真他娘大。
Reference
http://www.webrtc.org/reference/getting-started
http://egamesir.blog.163.com/blog/static/188096088201362411524585/
http://blog.csdn.net/choday/article/details/19978427
在Windows下編譯WebRTC