准备工作
准备工作里面,我们需要下载webkit源码,和一些编译和调试需要用到的工具。具体如下:
a.从官网下载nightly build的源码包,不含svn目录的纯源码,大概16M。
http://nightly.webkit.org/
b.下载WebKitSupportLibraries.zip:
http://developer.apple.com/opensource/internet/webkit_sptlib_agree.html
c.开发工具以及编译环境:
CygWin(使用官网提供的zip包),QuickTime SDK,
DirectX SDK Feb 2010, Visual Stdio 2005 Team Suite(包含SP1的整合包)。
d.safari浏览器(调试程序运行时会需要该软件安装的部分运行环境)
以上软件和源码都已在服务器共享。
注意:VS2005必须安装SP1,否则编译会通不过
安装和配置编译环境
a.安装cygwin:
利用cygwin-downloader进行下载,里面以及帮你配置好了需要下载的软件包,一共119个,下载后,启动setup.exe, 从本地目录安装,即指定你的安装目录为刚下载包的那级目录;(cygwin中下载的119个包在已经上传到服务器上)
b.安装vs2005和safari
c.安装QuickTime SDK,在编译QTMovieWin时会用到
d.安装DirectX SDK,在编译WebCore会用到
e.解压源码包到指定目录
注:
1、 Visual Studio 2005 Service Pack 1 ATL Security Update.补丁是sp1系统安全相关,未安装。
2、 KB918559 无中文版,无法在中文版VS中安装(KB918559 FIX: You may experience slow performance and increased
memory usage)
3、 KB935225无中文版,无法在中文版VS中安装(KB935225 FIX: Visual C++ based projects take longer to compile after
you install Visual Studio 2005 Service Pack 1)
4、 KB943969 可以安装,已放在服务器上(FIX:
Visual Studio 2005 stops responding or performance is slow when you use the
IntelliSense feature)
5、
KB947315可以安装,已放在服务器上(KB947315 C++ Intellisense hangs when hotfix KB943969 is installed.
Since many customers are encountering this problem and KB943969 is widely used
publically downloadable fix, the product group would like to fix this hang.)
6、 instructions for installing the 32-bit version of Debugging
Tools for Windows. 可选(Optional:
Install the 32-bit version of Debugging Tools for Windows)
安装完上面的软件和补丁之后,我们需要设置一些环境变量,以便程序正确运行。
a.
增加和修改系统环境变量:
WEBKIT_HOME=<webkit源码根目录>
WEBKITOUTPUTDIR=%WEBKIT_HOME%\WebKitBuild
WEBKITLIBRARIESDIR=%WEBKIT_HOME%\WebKitLibraries\win
PATH中加入”<cygwin安装目录>\bin”。(VS编译时会报一些命令无法找到的错误)
VSINSTALLDIR=<vs的安装目录>
b. 打开cygwin的shell,进入到%WEBKIT_HOME%中的WebKitTools\Scripts下,
# ./update-webkit
该命令进行更新svn以及下载依赖包的源码,由于我们下的源码不含svn目录,所以不会进行与最新仓库的同步,只会下载依赖包源码,大概1M多.
将WebKitSupportLibraries.zip拷贝到%WEBKIT_HOME%\下
#./update-webkit-support-libs #此时会安装WebKitSupportLibraries.zip
编译和调试
1.
编译
关于编译,有两种途径,其最终结果都是一样的。个人推荐第二种。如下:
a.
打开cygwin shell,执行如下命令
# cd <webkit home>/WebKitTools/Scripts
# ./set-webkit-configuration –debug #设置整个工程为debug模式
#./build-webkit #开始编译
b.使用VS2005进行编译:
用VS打开%WEBKIT_HOME%\WebKit\win\WebKit.vcproj\WebKit.sln
VS加载完解决方案后,修改整个解决方案的属性,设置为Debug模式,这里还有其他几个模式,如Debug_CarioXX,这是跟Cario图形库相关的,这里我们没有安装Cario相关的开发包,所以使用Debug。
因为quicktime sdk的原因,最好将每个项目的C/C++这项中的Treat warn as error(将警告视为错误)改为否,否则会因为一些警告而停止编译。(QTMovieWin,DumpRenderTree,ImageDiff。)
2.调试
编译完成后,就可以开始调试。调试时,将WebKit项目设为启动项目,F5开始调试,选择%WEBKITOUTPUTDIR%\bin\WinLauncher.exe,确定后会发现程序运行还需要一些DLL文件。这时需要从safari的安装目录下拷贝对应的dll文件,放入到WebKitBuild\bin\下面即可。我已经将这些DLL文件整理了一份。(DLL文件在服务器上共享)
还有一种调试方法是:附加到进程,需要你本机安装Safari浏览器,或者其他基于WebKit引擎的浏览器。调试时,会找不到符号,此时需要你添加远程的符号服务器:工具->选项->调试->符号:在里面添加:
http://developer.apple.com/internet/safari/windows_symbols。
此时你只要能确保WinLauncher能够正常运行,那么就可以开始调试了。
补充:正确运行WinLauncher,需要安装Safari这个浏览器,里面提供了WinLauncher运行时的一些环境,该环境可能被放置在WINDOWS\system32中,目前我还没找到哪些是必须的。
也可以直接用safari.exe调试,在webkit
project属性里,debug标签下,command指向safari.exe,environment:WEBKITNIGHTLY=$(OutDir),It is also
recommended that you follow the
instructions to configure Visual Studio to use Apple's Safari for Windows
symbol server.
注意:下载的版本比较新(Webkit-r72487),若运行出现异常,可以尝试修改WebKit的项目属性:属性->配置属性->清单工具->输入和输出,修改里面的”嵌入清单(Embed
manifest)”改为否。(目前的异常都是因为环境的原因,环境正确基本都可以正常调试运行)
总结
整个编译过程中遇到的问题几乎都是跟安装环境相关,一开始缺少了QuickTime SDK和DirectX SDK,到后面发现VS2005自带的编译器也有问题,需要安装VS2005 Service Pack 1。安装完后,一般就会编译成功了,毕竟webkit的源码每天都有daily build,基本上拿来就能编译通过的。如果不成功,第一时间就应该想想是否是环境没配好。
调试的时候,一开始就会提示你缺少这样那样的dll,这个需要自己整理,但基本都能从Safari安装目录下找到。
参考
以上步骤参考自如下网站:
http://webkit.org/building/tools.html
http://webkit.org/building/debug.html
http://trac.webkit.org/wiki/BuildingOnWindows |