2-3年前在做客戶端開發時,看過CHROME的一部分代碼,主要是BASE庫相關的。其項目之大,編譯時間之長給我留下了深刻的印象。
3年后的最近,想着再讀一下其他部分的代碼,所以就對其糾結的下載和編譯過程做下總結。
網上的一些文章都是比較過時的,按照那些文章的做法基本沒啥戲。其實,仔細閱讀chromium中關於Get Source Code頁面的說明就能開耍了。現在的整個流程要比之前的流程感覺清晰多了。
我的環境是WIN7 SP1 + VS2013 UPDATE4。最新的chrome代碼引入了一些C++11的特性,所以用13是必須的。
具體流程
- VPN一枚。天朝的特殊需求,大家懂的。
- 下載depot_tools,具體流程可以參考這個頁面。下載好后,在系統變量PATH中添加depot_tools的路徑。
- 然后設置系統變量set DEPOT_TOOLS_WIN_TOOLCHAIN=0 這個系統變量可以提前設置。
- 打開cmd,輸入fetch --nohooks chromium 開始進入漫長的下載過程,會下載很多必備的工具,比如python,git之類的
- 執行gclient,會檢查一些環境,繼續更新一些東西
- 執行gclient sync,同步最新的代碼,同步其他模塊之類的
- set GYP_MSVS_VERSION=2013
- set GYP_GENERATORS=msvs-ninja,ninja
- set GYP_DEFINES=component=shared_library, 以DLL方式編譯,你如果不想就不用設置這個變量
- 執行gclient runhooks,開始生成項目之類的
- cd src,切換到src目錄下
- ninja -C out\debug chrome,開始編譯
遇到的問題
編譯過程中提示一些編碼問題,放狗搜了下,我把系統的“非Unicode程序的語言”設置為英語(美國)后重啟再編譯就好了。
我用的機器是E5的CPU,SSD盤,96G內存,編譯一共用了差不多1個半小時。留圖紀念下: