自己編譯webkit,遇到了一些問題進行了總結,放到這里和大家分享一下:
1.編譯前的准備工作一
DirectX SDK(http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=10084) (這個文件少了 webcore會編譯不通過),
VS需要做一下升級 安裝 VS90SP1 以及補丁 KB945140,KB960075,KB957912,KB967631
下載google提供的 cygwin (webkit.org/repository/webkit/trunk/Tools/CygwinDownloader/cygwin-downloader.zip) cygwin中有100多個軟件要讓他全部下載完,不然后面的工作會出現問題,如果你的機器已經安裝了perl等,可能會和它自帶的沖突
Quicktime SDK(http://developer.apple.com/quicktime/download/)需要申請賬號才能下載
下載並安裝以上文件到c盤
下載源碼---編譯前的准備工作二
http://nightly.webkit.org/ 放到C:\cygwin\home\ 下 在Cygwin中使用tar -xjvf WebKit-r112532.tar.bz2 ,然后重命名 WebKit
下載一些庫---編譯前准備工作三
下載
WebKitSupportLibrary和WebKitAuxiliary:http://developer.apple.com/opensource/
將上面文件(下載后不用解壓)放到 C:\cygwin\home\WebKit 下,因為我的cygwin是建立在c盤下的
2.設置環境變量 ---編譯
將WEBKITLIBRARIESDIR設定為 WebKit 源代碼目錄\WebKitLibraries\win路徑; 將WEBKITOUTPUTDIR 設為你打算要存放obj和dll 的輸出文件夾,當然這個文件夾所在的分區至少要有4G的剩余空間。
說明: WEBKITOUTPUTDIR可以隨便設,如果要保持和其他Build方式的一致性,那么就設置成為%WEBKIT_DIR%\output,這里%WEBKIT_DIR%是Webkit文件夾的絕對路徑。WEBKITLIBRARIESDIR必須設置為%WEBKIT_DIR%\WebKitLibraries\win文件夾。
例如:
PATH | c:\cygwin\bin |
WEBKIT_DIR | C:\cygwin\home\WebKit (我的WebKit 放在了home目錄下) |
WEBKITLIBRARIESDIR | %WEBKIT_DIR%\WebKitLibraries\win |
WEBKITOUTPUTDIR | %WEBKIT_DIR%\WebKitBuild |
運行腳本---編譯
打開cygwin 在 WebKit/webkit/Tools/Scripts/下執行腳本
perl update-webkit
perl build-webkit 運行時出現 如下問題
*************************************************************
Cannot find '/cygdrive/c/Program Files/Microsoft Visual Studio 9.0/Common7/IDE/VCExpress.exe'
Please execute the file 'vcvars32.bat' from
'C:\Program Files\Microsoft Visual Studio 8\VC\bin\'
to setup the necessary environment variables.
*************************************************************
Died at /home/WebKit/Tools/Scripts/webkitdirs.pm line 1551.
不用關心 ,不影響正常編譯
編譯過程-編譯
a) 用VS打開WebKit/WebKit/win/WebKit.vcproj/WebKit.sln,選擇正確的Configuration,也就是Debug和Release,選擇Debug即可。(切記不要選擇debug_all)
b) 選擇DumpRenderTree, QTMovieWin, WebCore, WebKit, WinLauncher等所有項目(把c++項目的屬性都設置一遍)的項目屬性,左側選擇“C/C++”,將右側的“Treat Warnings As Errors”(“將警告視為錯誤”)設置為“No”。這個必須設置。否則編譯時會報錯。
c) 設置警告級別,不輸出報警
d) 右擊WinLauncher,選擇“設為啟動項目”,然后F7,開始編譯。
編譯后會出現如下錯誤
error C2001: 常量中有換行符
error C2001: 常量中有換行符
fatal error C1057: 宏展開中遇到意外的文件結束
到相應的行 刪除全角符號 "“" 即可
之前
RetainPtr<CFStringRef> selectedCFString(AdoptCF, truncatedStringForLookupMenuItem(selectedString).createCFString());
return formatLocalizedString(WEB_UI_STRING("Look Up “%@” ", "Look Up context menu item with selected word"), selectedCFString.get());
#else
return WEB_UI_STRING("Look Up ”<selection>" ", "Look Up context menu item with selected word").replace("<selection>", truncatedStringForLookupMenuItem(selectedString));
之后改為
RetainPtr<CFStringRef> selectedCFString(AdoptCF, truncatedStringForLookupMenuItem(selectedString).createCFString());
return formatLocalizedString(WEB_UI_STRING("Look Up %@ ", "Look Up context menu item with selected word"), selectedCFString.get());
#else
return WEB_UI_STRING("Look Up <selection> ", "Look Up context menu item with selected word").replace("<selection>", truncatedStringForLookupMenuItem(selectedString));
然后全部清除,重新編譯 即可順利通過
下載安裝 safari
編譯完成后,需要將C:\Program Files\Common Files\Apple\Apple Application Support下的一些庫文件拷貝到C:\cygwin\home\WebKit\WebKitBuild\Debug\bin目錄.
運行MiniBrowser.exe
運行WinLauncher.exe
試試吧