環(huán)境:
win7_x64、VS2013
開始:
一、下載webkit
從網(wǎng)站"https://github.com/WebKit/webkit"下載webkit,我下載的版本最后的修改記錄時(shí)間為2015-6-17,解壓到目錄,例如"D:/webkit-master"
二、安裝cygwin
下載地址:http://download.csdn.net/detail/dc11223344/8851923,默認(rèn)安裝在系統(tǒng)目錄,因?yàn)榫幾gwebkit時(shí)會從系統(tǒng)目錄查找cygwin,如果沒有安裝在操作系統(tǒng)目錄,則需要將cygwin\lib加入環(huán)境變量path中,然后將項(xiàng)目中的%SystemDrive%\cygwin\bin刪如果你在安裝cygwin之前獨(dú)立安裝了python、請先將python卸載,由于最新版本的webkit使用python一些比較新的庫,所以對python的版本也會有要求,建議2.7.0以上版本;打開cygwin\lib\ruby\2.2.0目錄,新建空白文件rubygems.rb,否則運(yùn)行ruby,會提示找不到文件,在cygwin命令提示符窗口下運(yùn)行以下命令,可以測試安裝情況
三、安裝webkit依賴庫
1. DirectX SDK下載,并安裝2. 下載Safari,并安裝3. 下載WebKitAuxiliaryLibrary.zip和WebKitSupportLibrary.zip,將win目錄解壓到“D:/webkit-master/WebKitLibraries/win"目錄
四、設(shè)置環(huán)境變量
1. WEBKIT_DIR D:/webkit-master2. WEBKITLIBRARIESDIR %WEBKIT_DIR%/WebkitLibraries/win3.
WEBKITOUTPUTDIR %WEBKIT_DIR%/build4. Path D:\cygwin\bin;設(shè)置完畢后,最好重啟系統(tǒng)(有可能我們設(shè)置的環(huán)境變量沒有及時(shí)生效)。
五、更新文件更新時(shí)間
更新create_regex_tables、Keywords.table文件更新時(shí)間,打開create_regex_tables和更新create_regex_tables、Keywords.table文件,刪除一個(gè)字符后再添加該字符,然后保存即可修改更新時(shí)間,在WebKit項(xiàng)目中,部分.h、.cpp和.idl文件是由.in、.table、.json、.css等文件生成的,如果這些文件的更新時(shí)間早于這些.h、.cpp文件,可能不會重新生成文件,會出現(xiàn)一些變量定義沒有找到的錯(cuò)誤(例如maxTokenLength等等)。
六、編譯webkit
1. 編譯"WTF Projects"項(xiàng)目
1. 編譯"WTFGenerated"工程
由于我的cygwin不是安裝在系統(tǒng)目錄下,所有要做一些修改,如果你將cygwin安裝在系統(tǒng)目錄則不需刪除"%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 #ifndef U_DISABLE_RENAMING #define U_DISABLE_RENAMING 0
2. 編譯“JavaScriptCore Projects”項(xiàng)目
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“項(xiàng)目
1、編譯"WebCoreGenerated"工程
打開“屬性“\"NMAKE",將%SystemDrive%\cygwin\bin\which.exe修改為which.exe,理由上面以說明
2、編譯”WebCore“工程
錯(cuò)誤:..\platform\LocalizedStrings.cpp(250): error C2001: 常量中有換行符,將"Look Up “%@”"替換為"Look Up \"%@\""
4、編譯"WebKit Projects"項(xiàng)目
1、編譯"Interfaces"工程
打開"InterfacesPreBuild.cmd"和"InterfacesPostBuild.cmd"文件,刪除"%SystemDrive%\cygwin\bin\",刪除WebKitBuild\Debug\buildfailed文件
2、編譯"WebKit"工程
5、編譯”WinLauncher Projects“項(xiàng)目
1、編譯”WinLauncherLib“工程
打開”WinLauncherLibPreBuild.cmd“文件,刪除"%SystemDrive%\cygwin\bin\"
2、編譯"WinLauncher"工程
打開”WinLauncherPreBuild.cmd“文件,刪除"%SystemDrive%\cygwin\bin\";打開"DLLLauncherMain.cpp"文件,修改appleApplicationSupportDirectory函數(shù)為static wstring appleApplicationSupportDirectory() // 表示從當(dāng)前可執(zhí)行文件目錄查找依賴的Safari的dll
七、調(diào)試webkit
將Safari\Apple Application Support下的一些dll拷貝到WinLauncher.exe目錄下,運(yùn)行WinLauncher.exe。
最后說一下編譯webkit的體會,第一次編譯是wke庫,在今年3月份,每天晚上擠出時(shí)間,斷斷續(xù)續(xù)用了3個(gè)星期才成功;第二次編譯webkit,是在端午節(jié)的時(shí)候,用了三天,終于在虛擬機(jī)下編譯成功,最后結(jié)合虛擬機(jī)下的經(jīng)驗(yàn),于是又在本機(jī)編譯了一遍,才有了此文。
|