說一下為什么這么晚才發第二篇,上周和這周department的工作太多了,晚上都是十點半從公司出發,回家以后實在沒有多余的精力去摸鍵盤了。所以請大家包涵!
上期回顧:
chromium源碼下載:
-
找個靠譜的vpn(我試過了,網上說的不用vpn拿代碼的都不靠譜);
-
獲取depot_tools,解壓,設置環境變量;
-
gclient獲取python和git,svn,設置環境變量;
-
fetch–nohooks chromium –nosvn=true 獲取源碼;
-
gclientsync --force –nohooks 同步到最新
上邊的python和git,也可以通過手動安裝,只要環境變量設置好了就可以。
環境配置:
獲取代碼的最后一步是獲取編譯環境也就是Visual Studio 2013,上面所有的都成功以后,運行gclient runhooks就會把編譯需要的vs2013的文件下載到本地,存儲在depot_tools\win_toolchain\vs2013_files路徑下,主要文件是編譯需要的庫文件。
在windows上編譯chromium的官網幾個說明:
1.你必須把你的windows系統區域設置為英文,否則編譯時會發生錯誤:"The file contains a character that cannot berepresented in the current code page."這個問題在不切換語言的情況下也可以解決。請往下看。
2.因為之前的Visual Studio Express(免費版)存在一些問題,微軟也在update4中做了修復,所以現在官網說明用Visual Studio 2013 Update4(Community版或者Professional版)來編譯,其他的版本不支持。另外windows系統版本必須是win7 64位以后的版本,32位的已經不支持了。
另外一些說明:
選擇編譯的版本:
首先切換至src目錄下,列出所有版本的標簽,下面的命令將標簽記錄到tags.txt文本中:git tag >>tags.txt 2>&1
使用notepad++打開后如下,只截取了最新tag:
大家可以切換到某個tag進行編譯,命令和切換到分支相同,使用如下命令:
git checkout -b chrome_43.0.2355.2_local_branch 43.0.2355.2
創建本地分支chrome_43.0.2355.2_local_branch並切換到遠程43.0.2355.2tag上
通過git branch查看是否成功:
同步代碼:
gclient sync --nohooks --with_branch_heads --with_tags --outpu
t-json="log.json"–jobs 16
使用--nohooks可以減少每次都檢查編譯環境等信息。
編譯:
1)生成工程,生成可以用vs2013打開的sln,方便之后調試使用。寫成批處理文件執行:
set GYP_MSVS_VERSION=2013
set GYP_GENERATORS=msvs-ninja,ninja
set GYP_DEFINES=component=shared_library
set PATH=C:\depot_tools\python276_bin\;C:\depot_tools\;
python.exe src/build/gyp_chromiumsrc/chrome/chrome.gyp >>log.txt 2>&1
2)編譯工程
set PATH=C:\depot_tools\;
ninja -C src\out\debug chrome>>log.txt 2>&1
以上兩步把生成的log放在log.txt中,方便查看。
說明:
1.set GYP_GENERATORS=msvs-ninja,ninja
最新代碼生成工程時,會因為msvs-ninja無法打開一些文件,應該影響不大
2.set GYP_DEFINES=branding=Chromium proprietary_codecs=1 buildtype=Dev
優化設置,可以設置
3.set DEPOT_TOOLS_WIN_TOOLCHAIN=0
設置為0是讓gclient不要自動去構建環境,使用本機現有環境,可能修改的地方比較多,例如設置set GYP_DEFINES=windows_sdk_path="C:\Program Files(x86)\Windows Kits\8.0",一些json文件的路徑等等。默認為0.
由於編譯chromium源碼對warning要求很嚴格,所以我列出較重要的warning的解決方法:
1.針對編碼問題,和語言問題。
解決方法:最新版本已經將waring4996包含其中,但是沒有4819,加上它,會解決很多麻煩。
在src\build\common.gypi文件中增加:
附上官方關於編譯參數的說明:
在線查看版本號的地址:
http://omahaproxy.appspot.com/
之后我會陸續推出關於chromium的一些列文章,請大家繼續關注。
如果大家對本系列文章有疑問,可以直接在公眾號留言,小編第一時間聯系原創作者幫你耐心解答。
技術人員都有自己的情懷,深陷其中而不被理解,歡迎關注個人微信公眾平台:程序員互動聯盟(coder_online),一個開發人員的家,來訴說自己的故事。