由于我是第一次编译开源的代码,很多东西不是太懂,所以中间出现很多问题。建议第一次像我这样编译webkit的童靴。第一,必要下载最新版本的源码,因为新版本的源码在编译过程中会遇见很多新错误,这样别人很难帮你解决。第二,编译通不过主要还是因为环境的问题,所以在安装开发工具和支持库的时候最好安放在默认路径或者是官网推荐路径下,这样可以避免出现很多麻烦,虽然我是很不情愿把那么大的东西安装在C盘,但就是因为这样所以导致重装系统一次。在编译失败的时候不要灰心,重来一遍,坚持就是胜利。一般只要你的电脑不是很老,这个solution还是可以在2 个小时左右编译出来的,但是我的电脑我不明白是因为什么,刚开始启动编译的时候跑的还挺快,到了后面就是龟速,所以浪费了超多的时间。莫非在内存占用过多的时候,编译进程会减速?我的电脑可识别的内存为2.85G,占用最多也只有80%左右,还是不明白到了后面cl进程为什么只有5%以下的CPU占用率?
获取源码
1、下载webkit的源码,http://nightly.webkit.org/ 选择 Source 直接下载就行了,大小只有20几M,很快就能下完。建议不要下载太高的版本。
话说这源码也更新的太快了把,一天更新好几次都有。
安装开发工具
1、根据 http://www.webkit.org/building/tools.html 推荐使用VS205,当让网上也有人使用VS2008。
2、安装cygwin,cygwin可以在windows平台下模拟Uinux系统。 Webkit官网提供了一个cygwin-downloader.zip供下载,解压以后,文件夹里面有一个cygwin-downloader.exe,点击运行它会自动下载N个软件包;下载完成后,点击Cygwin的安装程序选择从本地文件夹安装,把刚才下载的N个软件都装上即可。但是如果是在内网或者其他的原因cygwin-downloader.exe下载安装包的时候失败。那我们就需要手动安装,进入cygwin官网下载setup.exe,运行,选择安装
["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"]
耐心等待过后,然后你的cygwin就算是搞定了,如果不安装这些的话,后面编译就一定会出错。
3、安装 QuickTime SDK,下载前需要在apple上注册
4、安装 DirectX SDK
5、下载WebKitSupportLibrary.zip,
https://developer.apple.com/opensource/internet/webkit_sptlib_agree.html
不需要解压,直接放在webkit源码的根目录下。
那webkit的源码放哪?放在cygwin/home/<username>/下吧。
6、打开Cygwin,运行WebKit/Tools/Scripts/update-webkit,是个更新脚本,不运行这个编译的时候是肯定要出错的。但是如果是在内网的话,需要做一个curl的代理,否则会更新不成功。其实就是在你cygwin/home/<username>/下创建一个.curlrc文件,内容为:proxy = http://proxy.tencent.com:8080 解释一下,貌似不同的公司代理不同,自己看着办把。其实更新文件在浏览器中是可以下载的,但在命令行中就是下载不了,事实上只是端口的问题。如果你正确设置了代理还是运行不正确的话,那就需要考虑对于版本过低的源码不支持update
7、运行WebKit/Tools/Scripts/build-webkit,如果一开始就出错的话,那多半是环境不对,好好看错误提示,也许就能找到解决办法。如果是运行出现了一大坨内容后,再提示出错的话,那就不需要管它了。
8、还需要记得设置两个环境变量,
WEBKITOUTPUTDIR = %WEBKIT_DIR%\WebKitBuild
WEBKITLIBRARIESDIR = %WEBKIT_DIR%\WebKitLibraries\win
%WEBKIT_DIR%当然就是指您的Webkit文件夹的绝对路径。
9、用VS2005打开Sources\WebKit\win\WebKit.vcproj\WebKit.sln,选择正确的Configuration,也就是Debug和Release,为啥要说这个呢,因为Webkit在Windows下不止一个port,也就不止一个Debug和一个Release,这里我们要选的就是单纯的Debug和Release,其他的Build配置就忽略吧。
10、还有一个问题就是需要把相关项目中的 Treat Warnings As Errors 改成 No,否则会很纠结
11、然后我在编译12xxxx的版本代码的时候还遇见了Source\WebCore\platform\LocalizedStrings.cpp文件的编码错误问题。这个只需要用记事本打开源码中的那个出现了问题的文件,然后以utf-8的编码方式保存覆盖源文件,应该就ok了。
对于12xxxx的源码我是反复编译不成功,最后老大把他9xxxx版本的源码拷给我,事实上这个时候9xxxx版本的已经不支持update了,但我没有update直接使用VS2005编译,最后算是半成功了,因为只有MiniBrowser.exe能运行
调试运行
1、下载并安装safari,最好还是安装在默认目录下吧。
2、把safari目录下的dll库拷贝到WebKitBuild/bin,不需要全部拷贝,你可以使用depends这个工具查看都需要哪些dll库,然后一一在C盘下搜索,然后拷贝过来。
3、然后你就可以启动MiniBrowser/winLauncher ,然后在VS2005中将WebKit项目设置为Startup Project。在菜单中选择Debug –> Attach to Process。然后在弹出对话框的进程列表里面选择MiniBrowser/winLauncher,然后你就可以在代码中增加断点,开始慢慢研究了。