Windows下webkit的編譯

 

1.1        Windows下webkit的編譯[1]

建議硬件配置:3G以上內存, CPU 2.4GHz以上

1.      安裝VS 2005 team suite, 強烈建議使用英文版, 中文版有2個package安裝不上。

英文試用版下載地址: http://download.microsoft.com/download/6/f/5/6f5f7a01-50bb-422d-8742-c099c8896969/En_vs_2005_vsts_180_Trial.img; 中文試用版下載地址:  http://www.microsoft.com/downloads/info.aspx?na=90&p=&SrcDisplayLang=zh-cn&SrcCategoryId=&SrcFamilyId=5677ddc4-5035-401f-95c3-cc6f46f6d8f7&u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2fb%2fa%2f6%2fba691c56-8833-446c-82fe-cf94b588a622%2fchs_vs_2005_VSTS_180_Trial.img

2.      安裝 Microsoft Visual Studio 2005 TeamSuite Service Pack 1. 注意:

英文版VS2005安裝VS80sp1-KB926601-X86-ENU.exe

(http://www.microsoft.com/downloads/en/details.aspx?familyid=bb4a75ab-e2d4-4c96-b39d-37baf6b5b1dc&displaylang=en);

中文版安裝 VS80sp1-KB926604-X86-CHS.exe

(http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=BB4A75AB-E2D4-4C96-B39D-37BAF6B5B1DC)

3.      如果是Vista 或者Window 7 還需要安裝 SP1update for vista。Visual C++ 2005 Express 也是可以編譯WebKit的,但是需要單獨安裝Platform SDK。

4.      安裝 vs2005的4個升級包: KB918559/KB935225/KB943969/KB947315,注意: 1)安裝順序 2)升級包的語言須與自己的VS2005版本向匹配。

KB918559(http://archive.msdn.microsoft.com/KB918559/Release/ProjectReleases.aspx?ReleaseId=758)

KB935225(http://archive.msdn.microsoft.com/KB935225/Release/ProjectReleases.aspx?ReleaseId=909)

KB943969(http://archive.msdn.microsoft.com/KB943969/Release/ProjectReleases.aspx?ReleaseId=750)

KB947315(http://archive.msdn.microsoft.com/KB947315/Release/ProjectReleases.aspx?ReleaseId=872)

5.       下載並安裝DirectX SDK, 下載地址:

http://www.microsoft.com/downloads/en/confirmation.aspx?familyId=2c7da5fb-ffbb-4af6-8c66-651cbd28ca15&hash=40NoOmmctvu7uVT8jcCmCKqWgio1Ithuyx786FICwX50yjzkNDJc5Nb%2femI2caOZMqhDCcDdtmPjP9KnvA8x8A%3d%3d

6.       下載quicktime SDK並安裝, url: http://developer.apple.com/quicktime/download/,注意: 需要註冊一個開發者賬號後才能下載,可以註冊成最基本的免費賬號。

7.       安裝cgwin

如果是在公司內網環境,有可能需要設置cgwin的代理: export http_proxy=http://10035629:[email protected]:80

同理,可以設置ftp的代理, ftp_proxy

8.      下載WebKitSupportLibrary.zip, 無需解壓縮,直接放到WebKit根目錄下,URL: http://developer.apple.com/opensource/internet/webkit_sptlib_agree.html

9.      設置windows環境變量WEBKITLIBRARIESDIR和WEBKITOUTPUTDIR

將WEBKITLIBRARIESDIR設定爲  WebKit 源代碼目錄\WebKitLibraries\win路徑; 將WEBKITOUTPUTDIR 設爲你打算要存放obj和dll 的輸出文件夾,當然這個文件夾所在的分區至少要有4G的剩餘空間。

說明: WEBKITOUTPUTDIR可以隨便設,如果要保持和其他Build方式的一致性,那麼就設置成爲%WEBKIT_DIR%\output,這裏%WEBKIT_DIR%是Webkit文件夾的絕對路徑。WEBKITLIBRARIESDIR必須設置爲%WEBKIT_DIR%\WebKitLibraries\win文件夾。

10.  執行更新腳本, 運行WebKit/Tools/Scripts/目錄下的update-webkit和update-webkit-support-libs 兩個腳本

11.  編譯整個解決方案,可以採用以下兩種方式中的任意一種即可,建議在VS2005中進行編譯。編譯之前,還可以通過set-webkit-configuration腳本來設置build-webkit等腳本的默認編譯配置項。

a.      運行WebKit/Tools/Scripts/目錄下的 ./build-webkit[-debug]腳本

b.      在VS 2005中打開\WebKit-r82856\Source\WebKit\win\WebKit.vcproj\WebKit.sln工程文件,編譯整個解決方案。

1)      選擇正確的Configuration,也就是Debug和Release。

這個sln默認帶有六個編譯配置Debug、Debug_all、Debug_Cairo、Release、Debug_Internal、Release_Cairo。用 Release 編譯出來的就是用蘋果自己的渲染引擎的版本,和Safari 的一致。 用Release_Cairo 編譯出來的是支持Cairo渲染引擎的版本,這個版本可以脫離蘋果的環境單獨跑,但同時也無法放到蘋果的Safari 環境中運行。

2)     設置DumpRenderTree, QTMovieWin,WebCore, WebKit, WinLauncher, TestWebKitAPIInjectedBundle, TestWebKitAPI等的項目屬性,左側選擇“C/C++”,將右側的”TreatWarnings As Errors”設置爲”No”。

12.  要想監測編譯是否成功,可使用WinLauncher.exe 這個應用程序加載WebKit進行測試。

編譯成功後,生成的核心文件有:

WebKit.dll, JavaScriptCore.dll, QTMovieWin.dll,InjectedBundle.dll, WebKit.exe, MiniBrowser.exe(D:\webkit\WebKit-r87175\output\Debug\bin)。

 

注意:

1.      如果您機器上安裝過Qt,那麼檢查一下環境變量裏面是不是有QTDIR,如有,刪了先;如果有這個環境變量,Webkit的build腳本會認爲要編譯Qt的port。

2.      編譯時將在WEBKITOUTPUTDIR目錄下生成config.log和previous-autogen-arguments.txt文件,這兩個文件分別保存了配置信息和編譯參數。

3.      cyngwin的build-webkit腳本會爲每個參與編譯的工程,生成一箇中間的bat文件,然後調用cmd.exe,運行這個bat文件,其中調用的vs2005編譯器。從工程的buildlog中,可以看到這些行爲。

4.      編譯時候如果提示:

link: missing operand after `?t/'    

Project : error PRJ0002 : Error result1 returned from   'C:\cygwin\bin\link.exe'.

則有可能編譯時調用的連接器是cygwin而不是VC的, 此時需要將VC++的目錄放在cygwin目錄之前。在爲每個項目生成的*PreBuild.cmd文件中有以下語句對PATH進行設置, 如: set PATH=%SystemDrive%\cygwin\bin;%PATH%。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章