1. 程式人生 > >使用VS2013編譯webkit

使用VS2013編譯webkit

環境:

win7_x64、VS2013

開始:

一、下載webkit

從網站"https://github.com/WebKit/webkit"下載webkit,我下載的版本最後的修改記錄時間為2015-6-17,解壓到目錄,例如"D:/webkit-master"

二、安裝cygwin

下載地址:http://download.csdn.net/detail/dc11223344/8851923,預設安裝在系統目錄,因為編譯webkit時會從系統目錄查詢cygwin,如果沒有安裝在作業系統目錄,則需要將cygwin\lib加入環境變數path中,然後將專案中的%SystemDrive%\cygwin\bin刪如果你在安裝cygwin之前獨立安裝了python、請先將python解除安裝,由於最新版本的webkit使用python一些比較新的庫,所以對python的版本也會有要求,建議2.7.0以上版本;開啟cygwin\lib\ruby\2.2.0目錄,新建空白檔案rubygems.rb,否則執行ruby,會提示找不到檔案,在cygwin命令提示符視窗下執行以下命令,可以測試安裝情況
which perl
which python
which ruby

三、安裝webkit依賴庫

1. DirectX SDK下載,並安裝2. 下載Safari,並安裝3. 下載WebKitAuxiliaryLibrary.zip和WebKitSupportLibrary.zip,將win目錄解壓到“D:/webkit-master/WebKitLibraries/win"目錄

四、設定環境變數

1. WEBKIT_DIR D:/webkit-master2. WEBKITLIBRARIESDIR %WEBKIT_DIR%/WebkitLibraries/win3. WEBKITOUTPUTDIR %WEBKIT_DIR%/build
4. Path D:\cygwin\bin;設定完畢後,最好重啟系統(有可能我們設定的環境變數沒有及時生效)。

五、更新檔案更新時間

更新create_regex_tables、Keywords.table檔案更新時間,開啟create_regex_tables和更新create_regex_tables、Keywords.table檔案,刪除一個字元後再新增該字元,然後儲存即可修改更新時間,在WebKit專案中,部分.h、.cpp和.idl檔案是由.in、.table、.json、.css等檔案生成的,如果這些檔案的更新時間早於這些.h、.cpp檔案,可能不會重新生成檔案,會出現一些變數定義沒有找到的錯誤(例如maxTokenLength等等)。

六、編譯webkit

1. 編譯"WTF Projects"專案

1. 編譯"WTFGenerated"工程

由於我的cygwin不是安裝在系統目錄下,所有要做一些修改,如果你將cygwin安裝在系統目錄則不需刪除"%SystemDrive%\cygwin\bin\",開啟”屬性“\"NMAKE",將%SystemDrive%\cygwin\bin\which.exe修改為which.exe(我在前面將cygwin\bin目錄新增到了path中,可以which.exe直接訪問),開始編譯。

2. 編譯工程WTF工程:

在編譯工程前,我們需要修改
#ifndef U_DISABLE_RENAMING
#define U_DISABLE_RENAMING 1
#endif
修改為
#ifndef U_DISABLE_RENAMING
#define U_DISABLE_RENAMING 0
#endif

2. 編譯“JavaScriptCore Projects”專案

1、編譯"LLIntOffsetsExtractor"工程-> LLIntOffsetsExtractor.exe

2、編譯"LLIntAssembly"工程->LLIntAssembly.h

開啟“屬性“\"NMAKE",將%SystemDrive%\cygwin\bin\which.exe修改為which.exe,理由上面以說明

3、編譯"LLIntDesiredOffsets"工程->LLIntDesiredOffsets.h

4、編譯"JavaScriptCoreGenerated"工程

5、編譯"JavaScriptCore"工程

3、編譯”WebCore Projects“專案

1、編譯"WebCoreGenerated"工程

開啟“屬性“\"NMAKE",將%SystemDrive%\cygwin\bin\which.exe修改為which.exe,理由上面以說明

2、編譯”WebCore“工程

錯誤:..\platform\LocalizedStrings.cpp(250): error C2001: 常量中有換行符,將"Look Up “%@”"替換為"Look Up \"%@\""

4、編譯"WebKit Projects"專案

1、編譯"Interfaces"工程

開啟"InterfacesPreBuild.cmd"和"InterfacesPostBuild.cmd"檔案,刪除"%SystemDrive%\cygwin\bin\",刪除WebKitBuild\Debug\buildfailed檔案

2、編譯"WebKit"工程

5、編譯”WinLauncher Projects“專案

1、編譯”WinLauncherLib“工程

開啟”WinLauncherLibPreBuild.cmd“檔案,刪除"%SystemDrive%\cygwin\bin\"

2、編譯"WinLauncher"工程

開啟”WinLauncherPreBuild.cmd“檔案,刪除"%SystemDrive%\cygwin\bin\";開啟"DLLLauncherMain.cpp"檔案,修改appleApplicationSupportDirectory函式為
static wstring appleApplicationSupportDirectory()
{
	// 表示從當前可執行檔案目錄查詢依賴的Safari的dll
	return L"./";
}
  

七、除錯webkit

將Safari\Apple Application Support下的一些dll拷貝到WinLauncher.exe目錄下,執行WinLauncher.exe。

最後說一下編譯webkit的體會,第一次編譯是wke庫,在今年3月份,每天晚上擠出時間,斷斷續續用了3個星期才成功;第二次編譯webkit,是在端午節的時候,用了三天,終於在虛擬機器下編譯成功,最後結合虛擬機器下的經驗,於是又在本機編譯了一遍,才有了此文。