How to build webkit with vs2005 on windows

 

How to build webkit with vs2005 on windows

Webkit作为近来风起云涌的web browser界最红最火的开源浏览器引擎,大凡业内人士,都不缺乏将它拿起来剖析一番的理由。然而,若然没有必胜的信念和愚公移山般的毅力(小小夸张一下,嘿嘿),恐怕会倒在第一步(Build Webkit)就起不来了。作为Webkit架构设计优秀的表征,Webkit有众多port,每个port,又都有其编译环境和脚本,要深入其中弄清楚哪一个port,都不是简单的事情。考虑到vs2005作为c++开发的王道ide,能在vs2005下阅读和调试Webkit代码,无疑是最好的选择;但是很不幸,这也是比起其他port(例如Qt的linux port)编译环境设置更为复杂的一种方式,很多同学舍难取易,选择了Qt Linux Port,本来也未尝不可;但是GDB在调试Webkit的时候的速度之慢,已经到了令人发指的程度,要在这样的环境下理解Webkit,可是大大的不易了。废话不多说,下面就是在windows下使用vs2005编译webkit的过程(Using Apple’s Windows Port):


Developer Tools

  1. 首先,您得有个vs2005 team版,虽然Express版也可以,但是都到Build Webkit这份上了,您还是整个Team版吧;
  2. 其次,装上Microsoft Visual Studio 2005 Team Suite Service Pack 1.
  3. 最后装上四个补丁,vs2005就算准备妥当了:
    KB918559
    KB935225
    KB943969
    KB947315
  4. 搞定vs2005后,您得装个Cygwin,Webkit官网提供了一个cygwin-downloader.zip供下载,解压以后,文件夹里面有一个cygwin-downloader.exe,点击运行它会自动下载101个软件包;下载完成后,点击Cygwin的安装程序选择从本地文件夹安装,把刚才下载的101个软件都装上即可。这个里面的问题是下载需要半天,而且有可能出错。 本人在安装后就痛苦的发现用不了,然后比对着把所有软件包自己手动下载安装了一遍,如果您遭遇与在下相同的不幸,推荐手动安装Cygwin的时候使用台湾的服务器,速度飚快;

    另附需要安装的软件列表:["apache", "bc", "bison", "curl", "diffutils", "e2fsprogs", "emacs", "flex", "gcc", "gperf", "keychain", "make", "nano", "openssh", "patch", "perl", "perl-libwin32", "python", "rebase", "rsync", "ruby", "subversion", "unzip", "vim", "zip"]

  5. 最后,您还得去http://developer.apple.com/quicktime/download/下载一个quicktime sdk,需要注册才能下载,耐心注册就是,下载安装没什么说的;不过,这个sdk还是很多人build失败的万恶之源,这个后面再说。

Get The Code

  1. 这一步甚为关键,您要是比着官网的导引,到这一步就该下载http://nightly.webkit.org/files/WebKit-SVN-source.tar.bz2了,这玩意有两三百M大,Webkit官网到咱大陆局域网的速度又极慢,因此这一失足通常能浪费半天到一天的时间,您要是日理万机类型的人物,恐怕Webkit之旅就到此为止了。实际上完全没有必要下载svn的压缩包(在这里不得不赞同linus,svn真是shit,大家有空还是多琢磨琢磨Git吧,WebKit最近已经开始使用Git了),下载一个导出的纯代码的tarball就行了,这个网页http://nightly.webkit.org/第三个下载项。一般只有10M大小,刷刷的就下完了。
  2. 在Windows下编译需要下载一个补丁包,WebKit Support Libraries。这个压缩包包含了Apple的几个非开源库的Windows port。下完后放在Webkit源码解压后的根目录(注意这个补丁包不要解压,build的时候脚本会自己搞定的)。
  3. 上面两个dd下载完之后,打开Cygwin,进入Webkit文件夹运行一下
    WebKit/WebKitTools/Scripts/update-webkit
    是个更新脚本,不运行这个编译的时候是肯定要出错的。

     

    这个脚本做两件事情:首先执行svn update,因为咱没有在下svn的tarball,所以就直接跳过;其次,下载一个压缩包,这个压缩包里面包含的是webkit所依赖开源库的源代码,Size不大,更新过程是很快的,所以大胆的运行吧,运行完这个源码就算准备好了。


Setup

  1. 万事皆备后,依着官网,您应该运行WebKit/WebKitTools/Scripts/build-webkit了。在下可以打包票,此次build必然失败,不信可以试试,10分钟后再回来接着看。
  2. 失败了对不,Okay。不着急,先设置两个环境变量WEBKITOUTPUTDIR和WEBKITLIBRARIESDIR。第一个环境变量可以随便设,如果要保持和其他Build方式的一致性,那么就设置成为%WEBKIT_DIR%/WebKitBuild,这里%WEBKIT_DIR%当然就是指您的Webkit文件夹的绝对路径。第二个环境变量必须设置为%WEBKIT_DIR%/WebKitLibraries/win文件夹。
  3. 如果您机器上安装过Qt,那么检查一下环境变量里面是不是有QTDIR,如有,删了先;如果有这个环境变量,Webkit的build脚本会认为要编译Qt的port。
  4. 用vs2005打开WebKit-r44906/WebKit/win/WebKit.vcproj/WebKit.sln,选择正确的Configuration,也就是Debug和Release,为啥要说这个呢,因为Webkit在Windows下不止一个port,也就不止一个Debug和一个Release,这里我们要选的就是单纯的Debug和Release,其他的Build配置就忽略吧。
  5. 虽然理论上说现在已经可以编译了,但是由于该死的quicktime sdk,您还得再忙活一下:选择DumpRenderTree, QTMovieWin, WebCore, WebKit, WinLauncher等项目(反正把c++项目的该属性都设置一遍就对了)的项目属性,左侧选择“C/C++”,将右侧的”Treat Warnings As Errors”设置为”No”。

    为啥要设置这个涅?因为quicktime sdk的头文件用的不是unicode编码,跟咱的gbk不兼容。实际上代码里面的非ascii字符肯定都是注释,没什么影响;但是如果您把这个选项开着,编译器就把这当成一个错误,您就会很受伤了。

    如图:

    WarnAsError

  6. 到这里,才可以说万事俱备了,按下F7(Build Solution),然后双手合十,祈祷吧,如果一切顺利,一至数个小时后(依据您机器的性能),Webkit就成功的编辑结束了。

    注:如果发现找不到头文件,例如stdint.h,请打开Cygwin运行WebKitTools/Scripts/build-webkit, 你会看到Installing WebKit Support Libraries的提示文字,这时如果不报错,在Cygwin编译也无妨;如果报任何错误,打开vs2005按F7吧


Run & Debug

编译完成后最想做的当然是看看效果啦,最方便的方法就是运行WinLauncher了,但是很遗憾,您要是直接运行它,会发现缺少很多dll而无法启动。要运行这个程序,您得做两件事情:

  1. 下载并安装safari,这个咋安装咱就不说了吧;
  2. 把safari安装根目录下面的所有dll(当然除了webkit.dll和javascriptcore.dll,可别把辛辛苦苦编译了数十分钟乃至数小时的dll给覆盖了)拷贝到WebKitBuild/bin目录下,您会看到WinLauncher_debug.exe也在这个目录下;

    注:”Yunfei Wang”<perfectyunfei@gmail.com>同学来信告知,并非所有dll都是必须的,拷贝icuuc40.dll icudt40.dll CoreFoundation.dll pthreadVC2.dll objc.dll icuin40.dll CFNetwork.dll SQLite3.dll zlib1.dll Coregraphics.dll libxml2.dll即可。

然后,我们就可以直接双击WinLauncher_debug.exe运行WinLauncher了,如果想要以Debug方式单步跟踪,则要从vs2005启动,到这里,您就可以开始钻研WebKit的漫漫征途啦,咱辛苦付出总算有了回报^_^。当然,除了WinLauncher,还有另一种Debug WebKit的方式,那就是把WebKit作为Startup Project,attach到正在运行的safari进程上,这样,就可以使用safari作为前端来调试webkit了,具体操作步骤如下:

  1. 打开Cygwin,运行WebKitTools/Scripts/run-safari。注:这个脚本会从safari安装目录和咱们的WebKitBuild目录拷贝相关的文件到一个临时目录下,形成一个使用咱们刚编译的WebKit的safari,然后启动该Safari;
  2. 在vs2005中将WebKit项目设置为Startup Project。在菜单中选择Debug –> Attach to Process。然后在弹出对话框的进程列表里面选择safari.exe之后确定;

这时,你就可以跟调试WinLauncher一样基于Safari调试Webkit了。


See Also

  1. 虽然本文已然不短了,内容也不可谓不详实,但是请您不要指望一次就能编过,出现编译错误的时候,泡杯咖啡,静下心来,耐心的根据错误提示找原因,Webkit是进行DailyBuild的,代码质量是有保证的,所以一般的来说,编译错误都是环境没有设置好,下面是一些有价值的参考资料:
  2. http://trac.webkit.org/wiki/BuildingOnWindows
  3. http://webkit.org/building/tools.html
  4. http://webkit.org/building/checkout.html
  5. http://webkit.org/building/build.html
  6. http://webkit.org/building/run.html
  7. https://trac.webkit.org/wiki/QtWebKitHacking

http://niuwa.org/2009/06/23/how-to-build-webkit-with-vs2005-on-windows/

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值