先下載源碼和其他依賴,然後準備cygwin的環境,安裝vs2013,最後編譯即可。網上沒有能直接用於最新版本源碼編譯的教程,所以我在編譯過程中也遇到了很多坑。回過頭來看,這些坑都是可以避免的,想要自己嘗試編譯的同學,可以根據本文快速的實現自己編譯webkit(~除去下載文件的時間,15分鐘準備環境,1小時編譯完成)。
下載最近源碼
最近的下載版本和源碼在這裏:
我使用的源碼是這個版本built on 13 October 2014 and is a 45.9 MB:
http://builds.nightly.webkit.org/files/trunk/src/WebKit-r174650.tar.bz2
安裝Visual Studio 2013旗艦版
這裏是第一個大坑,WTF項目的compiler.h宏裏寫死了必須用2012以上的版本才能編譯(1800對應於2012,提示信息是建議使用2013):
C:\cygwin\home\kk\WebKit-r174650\Source\WTF\wtf\Compiler.h:
112 #endif
113
114: #if defined(_MSC_VER) && _MSC_VER < 1800
115 #error “Please use a newer version of Visual Studio. WebKit requires VS2013 or newer to compile.”
116 #endif
我開始想試着用vs2010或vs2015來編譯webkit,都有很多問題,走了彎路。比如編譯libGLESv2項目時需要用vs帶的ctres.exe處理嵌入資源。如果系統有多個不同的vs版本,那麼就可能互相影響而出問題。所以後來我索性卸載了VS2010、vs2015,重新下載安裝了vs2013旗艦版。
KEY:BWG7X-J98B3-W34RT-33B3R-JVYW9 :)
安裝cygwin
cygwin 官方直接下載的cygwin-downloader.zip綁死了cygwin源,隨機選擇一個,都無法訪問,很蛋疼,不能自動下載需要的169個lib~110M。建議使用163的源,需要先安裝一個python2.7:
然後在源碼文件夾下的WebKit-r174650\Tools\CygwinDownloader\ 修改cygwin-downloader.py添加一個新的163的源(改好的文件見http://pan.baidu.com/s/1i304FQH):
mirror_servers = [“http://mirrors.163.com/cygwin/“…
package_mirror_url = mirror_servers[0];
最後執行:
python27.exe cygwin-downloader.py
腳本會自動下載所有的依賴,然後啓動安裝cygwin,默認安裝在c:\cygwin。默認什麼都不要動就一直下一步即可。(最後python啓動cygwin的安裝程序setup.exe時會自動把這169個lib作爲參數傳遞給程序,所以不需要進去後人工選擇了。)
os.execv(“setup.exe”, list((“-L”, “-l”, os.getcwd(), “-P”, “,”.join(required_packages))))
安裝cygwin完了以後,把webkit源碼解壓到cygwin的用戶目錄下,比如我的是:
C:\cygwin\home\kk\WebKit-r174650
下載WebKitSupportLibrary.zip複製到WebKit-r174650\,別解壓:
http://developer.apple.com/opensource/internet/webkit_sptlib_agree.html ~1M
安裝DirectX和QuickTime
安裝DirectX SDK:注意這裏不同用最新版本的SDK,只能用這個版本的。
http://www.microsoft.com/en-us/download/details.aspx?id=6812 ~571M
安裝QuickTime SDK(這個玩意兒官方不維護已然找不到了)
準備環境
在開始-附件-命令行提示符上右鍵,以管理員身份運行。
進入命令行以後,執行VS安裝目錄下的設置環境命令:
“C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat”
接着進入cygwin安裝目錄,進入cyg命令行:
cd c:\cygwin
cygwin.bat
此時可以用export命令查看vs120comntools,vsinstalldir,lib,include等關鍵變量是否設置好。
進入WebKit-r174650\Tools\Scripts,執行
cd ~/WebKit-r174650\Tools\Scripts
./update-webkit
如果出現“Couldn’t unzip WebKitAuxiliaryLibrary.zip.”
打開文件update-webkit-dependency文件,去掉兩個curl的–sslv3參數。再重新執行update-webkit。
提示缺少fonts請忽略。
執行編譯
編譯之前,先改一處源碼:找到WebKit-r174650\Source\WebCore\platform\LocalizedStrings.cpp文件,去掉250行和252行的字符串內的雙引號。
開始編譯:在cygwin的命令行環境下WebKit-r174650\Tools\Scripts路徑下執行如下命令:
./build-webkit –release
提示svn更新代碼版本出錯,請忽略。
然後等待約1小時,即可。如果中間有問題,下次編譯會繼續上次的做增量編譯。
編譯完成了以後,顯示如下:
如果我們要debug模式的dll和exe,可以–debug。
./build-webkit –debug
可以看到debug版本編譯花了52分鐘31秒(debug項目比release多是因爲有test項目)。
此時進入C:\cygwin\home\kk\WebKit-r174650\WebKitBuild\Release\bin32,所有編譯好的文件都在這裏。比如我們做webkit開發用到的webkit.dll組件。
雙擊WinLauncher.exe即可看到webkit運行的效果:
總結
- 最新版本的編譯,嚴重依賴VS2013,網上沒有任何一個教程可以直接用來按部就班編譯最新的webkit,特別是多個vs的問題,這個我搞了幾個小時才清楚,走了不少彎路。
- 進入cygwin前,執行vcvars32.bat,把vc的環境變量都設置好,進入cygwin才能調用vs的ide、cl命令做編譯。
- 進入命令行前,使用管理員權限運行,避免編譯過程有權限導致的問題。
- 整個過程大概需要3.6G的下載量,so,需要好的網速。