自己编译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
试试吧