现在的位置: 首页 > 综合 > 正文

Win7+VS2010编译WebKit总结

2013年12月07日 ⁄ 综合 ⁄ 共 15911字 ⁄ 字号 评论关闭

【转载请注明Moon出品】

编译WebKit可谓历尽千辛万苦,多亏了老师的鼓励和督促、Ashod和师姐的帮助,才能最终历经九九八十一难,成功地将WebKit编译,得道升天…现将所有有关WebKit及其编译流程的知识以及经验总结如下,供大家分享和批评指正。

================================================================

WebKit

WebKit
WebKit是一个开源的浏览器引擎,与之相对应的引擎有Gecko(Mozilla FireFox等使用)和Trident(也称MSHTML,IE使用)。同时WebKit 也是苹果Mac OS X 系统引擎框架版本的名称,主要用于Safari,Dashboard,Mail 和其他一些Mac OS X 程序。WebKit 前身是 KDE(K桌面环境,Kool Desktop Environment) 小组的 KHTML,WebKit 所包含的 WebCore 排版引擎和 JavaScriptCore 引擎来自于 KDE 的 KHTML 和 KJS。当年苹果比较了 Gecko 和 KHTML 后,仍然选择了后者,就因为它拥有清晰的源码结构、极快的渲染速度。Apple将 KHTML 发扬光大,推出了装备 KHTML 改进型 WebKit 引擎的浏览器 Safari。

WebKit的官方网站是http://www.webkit.org/

谈到WebKit,不得不提的是Google Chrome。Google Chrome是由Google公司开发的开放源码的网页浏览器,它是基于其他开放源码软件(包括WebKit和Mozilla)所撰写的,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。2012年8月6日,Chrome已达全球份额的34%,是使用最广泛的浏览器。

值得一提的是,虽然Chrome是基于WebKit引擎的,但是Chrome的JavaScript引擎使用的是Google自己开发的V8引擎,它是Google丹麦使用C++开发的开源JavaScript引擎。Safari3.1以前的版本使用JavaScriptCore,而从4.0以后Safari选择了同样是WebKit团队开发的新一代JavaScript引擎SquirrelFish(最终被称为Nitro)以及更新一代的SquirrelFish Extreme(简称SFX)。

SquirrelFish

其他主流浏览器所使用的JavaScript引擎:
Mozilla

SpiderMonKey:第一款JavaScript引擎,由Brendan Eich在Netscape Communications时编写,用于Mozilla Firefox 1.0~3.0版本。

Rhino:由Mozilla基金会管理,开放源代码,完全以Java编写。

TraceMonkey:基于实时编译的引擎,其中部份代码取自Tamarin引擎,用于Mozilla Firefox 3.5~3.6版本。

JaegerMonkey:德文Jäger原意为猎人,结合追踪和组合码技术大幅提高性能,部分技术借凿了V8、JavaScriptCore、WebKit,用于Mozilla Firefox 4.0以上版本。

Internet Explorer

Chakra (JScript引擎):中文译名为查克拉,用于Internet Explorer 9的32位版本。

Opera

Linear A:用于Opera 4.0~6.1版本。

Linear B:用于Opera 7.0~9.2版本。

Futhark:用于Opera 9.5~10.2版本。

Carakan:由Opera软件公司编写,自Opera10.50版本开始使用。

其它

KJS:KDE的ECMAScript/JavaScript引擎,最初由Harri Porten开发,用于KDE项目的Konqueror网页浏览器中。

Narcissus:开放源代码,由Brendan Eich编写(他也参与编写了第一个SpiderMonkey)。

Tamarin:由Adobe Labs编写,Flash Player 9所使用的引擎。

一个典型的浏览器有两个必不可少的组成部分:渲染引擎和独立的JavaScript引擎。JavaScript引擎的独立性确保它能够被更方便的测试、重新生成或者在另一些项目中使用。例如Carakan被用在Presto中,Nitro被用在WebKit中,SpiderMonkey被用在Gecko中,KJS被用在KHTML中,Rhino默认不包含任何布局引擎。当然还有其他组合,例如V8与WebKit被用于Chrome浏览器中。

================================================================

Chromium

Chromium的旧logo
Chromium 是 Google Chrome浏览器背后的引擎,其目的是为了创建一个安全、稳定和快速的通用浏览器。

Chromium的新logo
Chromium是一个由Google主导开发的网页浏览器,它以BSD(Berkly Software Distribution)许可证等多重自由版权发行,并且开放源代码。Chromium的开发可能早自2006年即开始,设计思想基于简单、高速、稳定、安全等理念,在架构上使用了Apple发展出来的WebKit排版引擎、Safari的部份源代码与Firefox的成果,并采用Google独家开发出的V8引擎以提升解译JavaScript的效率,而且设计了“沙盒”、“黑名单”、“无痕浏览”等功能来实现稳定与安全的网页浏览环境。

Chromium是Google为发展自家的浏览器Google Chrome而开启的计划,所以Chromium相当于Chrome的工程版或称实验版(尽管Chrome自身也有β版阶段)。新功能会率先在Chromium上实现,待验证后才会应用在Chrome上,故Chrome的功能会相对落后但较稳定。Chromium的更新速度很快,每隔数小时即有新的开发版本发布,而且可以免安装,下载zip封装版后解压缩即可使用(Windows下也有安装版)。Chrome虽然理论上也可以免安装,但Google仅提供安装版。
================================================================
Chromium的官方网站是http://www.chromium.org/
编译流程
编译环境如下:
OS:Windows7
IDE:Visual Studio 2010

主要参考:
其他可能有帮助的文章:

我最初设想是依照Installing the Developer Tools(https://www.webkit.org/building/tools.html)中所说的流程编译WebKit,这个官方指导上所指定的IDE是VS2005或Visual C++ 2005 Express Edition。本人按照这份指导认认真真一步一步地搭建环境,结果编译一上来就碰到一个error,一时半会儿没查找到满意的解决方法。与此同时,我看到了那篇Ashod所撰写的文章,事实上相比VS2005,本人更偏爱VS2010,于是乎我决定在Win7+VS2010的环境下编译WebKit。至于Win7+VS2005的编译过程我会单独写另一篇文章,留待更新。

Let's get started!

源代码

WebKit Nightly Builds
本人选用的是2012年9月20日的WebKit-r128959。源代码可以在WebKit Nightly Builds(http://nightly.webkit.org/)中下载到,你要下载的是第三个选项Source。

选好了源文件版本之后,你就要开始搭建编译环境了。这里我要说一句,推荐大家在安装以下软件,尤其是SDK和SP的时候,尽量安装在默认路径,以免由于路径问题引来不必要的麻烦,除非你对路径设置很清楚。

安装Cygwin
Cygwin是许多自由软件的集合,最初由Cygnus Solutions开发,用于各种版本的Microsoft Windows上,运行UNIX类系统。Cygwin的主要目的是通过重新编译,将POSIX系统(例如Linux、BSD,以及其他Unix系统)上的软件移植到Windows上。目前Cygwin由Red Hat等负责维护。

你可以从http://svn.webkit.org/repository/webkit/trunk/Tools/CygwinDownloader/cygwin-downloader.zip2.8MB)下载到Cygwin的下载器。将这个zip解压到一个文件夹中,运行cygwin-downloader.exe。下载过程可能较慢,如果感觉没有下载速度,可以关闭这个程序并重新运行,它会找到上一次的下载点继续下载。下载完毕后会自动运行setup.exe,安装过程中要选择“Install from Local Directory”。默认安装路径:C:\cygwin\

注意:下载完成后,你可以把这个有setup.exe的文件夹保留下来,这样你在另一台电脑或虚拟机上编译WebKit的时候就可以直接运行这个setup.exe了,省去了等待下载的时间。

安装VS2010相关

VS2010

Visual Studio 2010.

Windows SDK 7.1.(下载页面:http://www.microsoft.com/download/en/details.aspx?id=8442,下载链接: http://download.microsoft.com/download/F/1/0/F10113F5-B750-4969-A255-274341AC6BCE/GRMSDK_EN_DVD.iso,文件大小:567MB

Visual Studio 2010 SP1.(下载页面:http://www.microsoft.com/download/en/details.aspx?id=23691下载链接: http://download.microsoft.com/download/E/B/A/EBA0A152-F426-47E6-9E3F-EFB686E3CA20/VS2010SP1dvd1.iso,文件大小:1.48GB)

Visual C++ 2010 SP1 Compiler Update for the Windows SDK 7.1.(下载页面: http://www.microsoft.com/en-us/download/details.aspx?id=4422,下载链接: http://download.microsoft.com/download/7/5/0/75040801-126C-4591-BCE4-4CD1FD1499AA/VC-Compiler-KB2519277.exe,文件大小:121MB)

在第二项Windows SDK 7.1的网页中,你要根据你的系统选择合适的iso进行下载:

x86GRMSDK_EN_DVD.isox64GRMSDKIAI_EN_DVD.isoItaniumGRMSDKX_EN_DVD.iso

我是32位的x86系统,所以安装的是GRMSDK_EN_DVD.iso。

安装相关SDK
按照Ashod博文中的说法是他并没有安装以下两个SDK就可以成功编译,但是我在编译的时候就遇到了一个错误(这里忘记了错误的准确描述,印象中有关d3dx9.dll),而这个错误就是因为缺少SDK,所以你在编译的时候最好还是装上这两个SDK。

QuickTime

下载这两个SDK的过程中我遇到了不少麻烦。官方指导中并没有直接给出这两个SDK的下载链接,QuickTime SDK还要注册Apple ID,DirectX SDK要验证Windows是否是正版。经过一番折腾我直接把下载链接弄到了,贴在上面,应该能帮大家节约不少时间。

其他与环境相关的修改
我在编译过程中遇到过这样一个错误:
C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.Targets(153,5): error MSB6001: Invalid command line switch for "CL.exe". Item has already been added. Key in dictionary: 'tmp'  Key being added: 'TMP'

这个错误的产生可能是由于Cygwin的TMP和TEMP环境变量会与Windows自己的TMP和TEMP环境变量冲突,所以我做了如下修改而且的确起作用了。
打开Cygwin\etc\profile文件,将其中的unset TMP, TEMP这一行注释掉,即在这行前面加上#。

注意:在修改前尽量备份一份profile文件,因为用有些软件修改profile文件之后,运行Cygwin的时候会有错误,提示有关'\r'的信息,这时你需要换一个软件修改。

至此,编译环境就算是搭建好了。接下来你要做的操作就是每次你选择新的源文件版本时都要进行的操作,这些操作都是在源文件文件夹中进行的。

================================================================

与源文件文件夹相关的修改
现在假设你的源代码文件夹名为WebKitSource。以我为例,我解压源文件压缩包之后得到的文件夹WebKit-r128959就相当于这里的WebKitSource文件夹。
  1. 将WebKitSupportLibrary.zip拷贝到WebKitSource\下。注意,不要解压。

  2. 将vs2010-build-env.cmd拷贝到WebKitSource\下,修改其中set CYGWIN_SOURCE_DIR=C:\cygwin等号右边的值,即你电脑中Cygwin的安装目录。另外,我将CYGWIN_DIR设置为C:\cygwin_dir,你可以根据自己的需要修改。

  3. 将pdenenv拷贝到WebKitSource\Tools\Scripts\下覆盖原版。

  4. 将WebKitSource\Source\WebCore\Modules\quota\中的文件全部拷贝到WebKitSource\Source\WebCore\storage\中去。

  5. 用VS2010打开WebKitSource\Source\WebKit\win\WebKit.vcproj\WebKit.sln,IDE会弹出一个Conversion Wizard告知你需要对方案(solution)或工程(project)进行转换,点击下一步完成转换。

    将WebKitSource\Tools\vcbin\下的cl.exe和midl.exe重命名为cl-.exe和midl-.exe(即让它们失效)。

  6. 打开WebKitLibraries\win\tools\vsprops\common.props,修改TreatWarningAsError为false。

  7. 打开 Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def,删除

  8. 其中的“?nullptr@@3Vnullptr_t@std@@A”。

  9. 找到 WebKitSource\Source\WebCore\platform\network\curl\CookieJarCurl.cpp和 WebKitSource\Source\WebCore\platform\image-decoders\ImageDecoder.cpp,右键打开Properties菜单,选择Configuration Properties>General,修改Item Tyep为C/C++ compiler。(10月9日后记:我尝试找了一下这两个源文件竟然没找到,我当初的确修改过,此问题留待修改)

  10. 打开WebCore\platform\LocalizedString.cpp,在264行和266行中有"Look Up “%@”""Look Up “<selection>”"注意%@和<selection>两边的双引号是全角的,然后删除这些全角的引号即可。

  11. 打开WebKitSource\Source\WebCore\platform\graphics\cg\目录下的ImageSourceCG.h、WebKitSource\Source\WebCore\platform\network\cf\目录下的SocketStreamHandle.h和SocketStreamError.h三个头文件,在#define xxx_h(以ImageSourceCG.h为例xxx_h就是ImageSourceCG_h)这行后面添加:
    #ifndef ExportMacros_h
    #include "config.h"
    //你可以取消下面这行的注释,在编译过程中可能会看到我写的提示信息
    //#pragma message("===>缺少定义,手动引入config.h")
    #endif
  12. 在TestWebKitAPI工程的config.h(WebKitSource\Tools\TestWebKitAPI\config.h)首部添加:#define _ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH

Ashod编写(我添加了一些中文注释)的vs2010-build-env.cmd首先创建了一些链接,这样你就不必再把WebKitSource文件夹移动到Cygwin的用户目录下了;然后设置了一些必要的环境变量:WEBKITOUTPUTDIR(编译结果的输出目录)、WEBKITLIBRARIESDIR(WebKit相关库的目录)、VSINSTALLDIR(VS100COMNTOOLS是安装VS2010后自动添加的一个环境变量,set VSINSTALLDIR=%VS100COMNTOOLS%..\..就获得了VS2010的安装目录)、PATH(执行脚本的路径,在默认PATH的基础上添加了%WEBKIT_DIR%\Tools\Scripts和%CYGWIN_DIR%\bin);最后脚本直接启动了Cygwin。


针对基于VS2010的编译,Ashod对pdenev脚本进行了一些修改(这个脚本本来是WebKit团队针对VS2005所写的),自动实现了5、6、7、8的修改。为了保险起见,你可以手动进行一下这些修改。

至于第9个修改,我是在Ashod的博文中看到的。我觉得这个修改不做也没有影响,同时我也不确定Ashod所写的pdenev中是否自动实现了这个修改,但是我确定进行这个修改不会导致编译失败。

根据经验,头文件并不是编译单元,编译器会直接用头文件的内容替换#include的位置。但是,我在编译的过程中发现ImageSourceCG.h、SocketStreamHandle.h和SocketStreamError.h这三个头文件就好像被单独编译了,因而在单独编译的时候因为找不到某些符号而报错,而config.h所包含的那些头文件中对这些符号进行了完整的定义。于是乎,我添加了第11步中的几行代码以确保这三个头文件始终能找到所需的符号。

第12步所做的操作是为了一个链接错误,这个错误产生的原因是编译时用Release模式去链接了一个Debug编译出的lib,或者用Debug模式链接了Release编译的lib。加入12中的那个宏就屏蔽了匹配检测,从而避免了这个错误。

================================================================

开始编译
如果这些操作都顺利完成,你就可以双击vs2010-build-env.cmd尝试编译了。在Cygwin命令行中你需要输入:
  1. cpan HTTP::Date(这个操作可能只在第一次编译的时候要用到,事实上与环境相关)。

  2. update-webkit(这个操作每个源文件文件夹第一次编译的时候要用到,下载并安装WebKitAuxiliaryLibrary.zip)。

  3. build-webkit --debug | tee log.txt。

build-webkit --debug | tee log.txt是以Debug模式进行编译,同时将编译信息输出到Cygwin用户目录下log.txt中去。你完全可以写成C:\\log.txt或C:/log.txt以便查看log。另外,我在编译的过程中会使用tee logMMDDHHMM.txt(如log05211314.txt就代表5月21日13点14分的log),推荐大家这样做,保存log对于诊断并解决错误至关重要。


接下来,找本书看或者出去运动运动吧,编译要花一到两个小时,而且这段时间内你的电脑一直处于忙碌状态,别烦它。编译过程中还可能遇到一系列的错误,我在文章后面列出了各种错误的解决方法。

================================================================

运行WebKit

运行SetAppleAppSupportPath.reg,这个注册表其实很简单,会添加键HKEY_LOCAL_MACHINE\SOFTWARE\Apple Inc.\Apple Application Support并添加键值对"InstallDir"="C:\\Program Files\\Safari\\Apple Application Support"。这个路径是运行MiniBrowser.exe或WinLaucher.exe时必不可少的。如果你的用的不是默认路径,那么你需要修改一下赋给InstallDir的路径值。

接下来,你就可以运行WebKitSource\WebKitBuild\Debug\bin\目录下的MiniBrowser.exe或WinLaucher.exe了。个人感觉渲染网页的速度很快,而下载网页的速度较慢,这一点可以通过对比MiniBrowser显示线上网页与本地网页的速度很明显地看出来。啰嗦句,当你要显示本地网页的时候记得在本地地址之前加上file:///,如file:///C:/HelloWorld.html。

MiniBrowser

WinLauncher

==========================================================

总结

WebKit更新非常频繁,因此到你编译的时候,前人的经验很可能就不能解决全部问题了,这时就需要你去完善你的WebKit编译流程了。以我为例,Ashod的博文(发布于2012年1月29日)中所用的版本是WebKit-r106194,到我编译的时候(2012年10月1日前后),他的这个版本就已经显露出过时的样子了。我曾尝试编译WebKit-r106194,但却发现在这个版本的脚本中,一些相关文件的下载地址后来都已经被新的地址取代了。版本新旧交替,随之而来的问题无法避免,本文中的下载链接也可能有一天会失效,希望届时能由你来撰写一篇WebKit编译总结了!

在写这篇文章的同时,我又进行了一次编译,遇到了一个没遇到过的错误,有关WebCore.lib中的一些无法解析的符号的错误。我认为这个错误是由于之前错误编译的结果,于是删除了WebKitBuild文件夹,重新进行了一次编译,果然没有再遇到这个错误。所以你一定要对编译过程中产生的错误认真分析,总会找到问题所在。

编译工程很辛苦,你会遇到各式各样的问题,有些可能是前人遇到过的,有些则可能从网上根本找不到解决方法。无论是哪种情况,都要求你能够沉得住气,认真分析错误产生的原因,然后或者在网上查找解决方法,或者向高人求助(不要羞于或懒于与高人建立联系,我就从与Ashod的联系中获得了很大的帮助),或者与周围对编译原理比较了解的人一起讨论解决方法。总之,坚持就是胜利!附上蒲松龄的自勉联,与君共勉。

有志者、事竟成,破釜沉舟,百二秦关终属楚;
苦心人、天不负,卧薪尝胆,三千越甲可吞吴。

Success belongs to the persevering

最后,希望本文对大家编译WebKit有所帮助,欢迎大家与我交流或提出宝贵意见,谢谢。

================================================================

各种错误的解决方法
错误:
C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(103,5): error MSB3073: The command "REM Do not edit from the Visual Studio IDE! Customize via a MiniBrowserPreBuild.cmd file.
C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(103,5): error MSB3073: if not exist "C:\WebKit-r128959\Tools\MiniBrowser\MiniBrowserPreBuild.cmd" exit /b

解决方法:

这类MSB3073错误是由于之前有错误没有成功解决。只要你将前一个错误解决,这个错误就不会出现。所以,每次编译过程中,你要做的就是解决第一个错误!

================================================================

错误:
C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.Targets(153,5): error MSB6001: Invalid command line switch for "CL.exe". Item has already been added. Key in dictionary: 'tmp'  Key being added: 'TMP'

解决方法:

打开Cygwin\etc\profile文件,将其中的unset TMP, TEMP这一行注释掉,即在这行前面加上#。

================================================================

错误:fatal error C1083: Cannot open include file: 'unicode/uchar.h'

解决方法:执行一遍update-webit。

================================================================

错误:Can't locate HTTP/Date.pm in @INC

解决方法:Cygwin中执行cpan HTTP::Date。

================================================================

错误:
..\platform\LocalizedStrings.cpp : warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss
..\platform\LocalizedStrings.cpp(264): error C2001: newline in constant
..\platform\LocalizedStrings.cpp(266): error C2001: newline in constant
..\platform\LocalizedStrings.cpp(264): fatal error C1057: unexpected end of file in macro expansion

解决方法:

打开\platform\LocalizedStrings.cpp,在264行和266行中有Look Up “%@”Look Up “<selection>”(注意%@和<selection>两边的双引号是全角的)删除这些全角的引号即可。

================================================================

错误:c1xx : fatal error C1083: Cannot open source file: '..\storage\StorageInfo.cpp': No such file or directory

解决方法:将WebKitSource\Source\WebCore\Modules\quota\目录中的文件全部拷贝到WebKitSource\Source\WebCore\storage\中去。

================================================================

错误:gtest.lib(gtest.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in HostWindow.obj

解决方法:在TestWebKitAPI工程的config.h首部添加:#define _ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH。

================================================================

错误:我印象中有一个错误有关于某个文件中的ENV{'VS80COMNTOOLS'}

解决方法:将VS80COMNTOOLS修改为VS100COMNTOOLS。

================================================================

错误:

'"D:\Softwares\VS2010\Common7\Tools\\vsvars32.bat"' is not recognized as an internal or external command, operable program or batch file.
'devenv.com' is not recognized as an internal or external command, operable program or batch file.

解决方法:

将C:\Program Files\Microsoft Visual Studio 10.0\Common7\Tools\中的vsvars32.bat拷贝到你电脑系统变量VS100COMNTOOLS所指示的那个路径当中去。以为我为例,我将VS2010自定义安装在了D:\Softwares\VS2010\中,VS100COMNTOOLS就是D:\Softwares\VS2010\Common7\Tools\。

================================================================

尚未解决的疑问
Ashod使用的是build-webkit --wincairo,但是这在我这里遇到了一些问题。
首先,使用--wincairo这个命令行选项的话,需要下载WinCairoRequirements.zip(http://dl.dropbox.com/u/39598926/WinCairoRequirements.zip),但是这个地址在国内被墙了。

于是,虽然我没学过perl,但是还是尝试读了读相关脚本,期望实现本地安装。我发现build-webkit脚本中有:
if (isGtk()) {
...
} elsif (isAppleMacWebKit()) {
} elsif (isWinCairo()) {
    (system("perl Tools/Scripts/update-webkit-wincairo-libs") == 0) or die;
} elsif (isAppleWinWebKit()) {
    (system("perl Tools/Scripts/update-webkit-support-libs") == 0) or die;
} elsif (isQt()) {
...
}
可见,build-webkit --wincairo实际上先调用了update-webkit-wincairo-libs,而这个脚本中又有:
my $file = "WinCairoRequirements";
my $zipFile = "$file.zip";
my $winCairoLibsURL = "http://dl.dropbox.com/u/39598926/$zipFile";
my $command = "$FindBin::Bin/update-webkit-dependency";

system("perl", $command, $winCairoLibsURL, ".") == 0 or die;

也就是调用update-webkit-dependency下载http://dl.dropbox.com/u/39598926/WinCairoRequirements.zip

脚本update-webkit-dependency中有:
print "Checking Last-Modified date of $zipFile...\n";
my $result = system "curl -s -I -k --sslv3 $libsURL | grep Last-Modified > \"$tmpAbsDir/$file.headers\"";
这是用来获取Last-Modified信息以便判断zip包是否过时的。

我使用“curl -s -I -k --sslv3 http://dl.dropbox.com/u/39598926/WinCairoRequirements.zip -x 127.0.0.1:8087”来通过代理翻墙获取文档信息,却发现得到的结果竟然没有Last-Modified字段。我还以为是因为我在国内的缘故,于是让国外的同学也帮忙试一下,结果:

Missing Last-Modified
也是没有Last-Modified字段,于是乎我暂时放弃了--wincairo。希望有人能够在这个方面继续做下去。

我也很希望能够通过修改perl脚本实现WebKitAuxiliaryLibrary.zip(https://developer.apple.com/opensource/internet/WebKitAuxiliaryLibrary.zip)、WinCairoRequirements.zip的本地安装,因为自己下载这些包相对来说速度更快也更方便。

================================================================

现在的编译只能实现build-webkit --debug,而且#define _ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH只是暂时屏蔽了匹配检测。接下来还要研究如何实现release版本的编译。

最初的编译目的是实现WebKit在VS2010下的断点调试,继续编译将继续进行。

================================================================

抱歉!评论已关闭.