好多程序员因工作原因,兴趣原因而需要编译WEBKIT进行研究。 经常会有许多朋友过来问我如何编译。 为了方便多的人 今天讲一下如何BUILD出WEBKIT也算为大家做点贡献。
先介绍一下自己的BUILD环境。 一台WINDWOS 8 X64位的正版操作系统 一款经过自己精心打造可以BUILD从VC6.0到VS2010的 VS2010编译器。 (关于如何打造这样的编译器请看我的另外一篇文章VS2005 到 VS2010 的使用习惯和注意事项)
准备工作
1.去http://nightly.webkit.org/这里下载最下载我们的主角WebKit-r116410源代码先生.地址为
http://builds.nightly.webkit.org/files/trunk/src/WebKit-r116410.tar.bz2
2.去http://www.webkit.org/building/tools.html下载cygwin-download
3.去http://developer.apple.com/quicktime/download下载QUICKTIME SDK
4.去http://www.microsoft.com/en-us/download/details.aspx?id=10084下载DirectX SDK
5.去http://site.icu-project.org/download 下载 ICU4.6.1
6.去http://www.webkit.org/building/checkout.html 下载WebKitSupportLibrary.zip
安装工作
1.解压源代码到D盘的D:\WebKit-r116410下面 复制WebKitSupportLibrary.zip到D:\WebKit-r116410下面 不需要解压
2.解压Cygwin-download到任意位置并执行cygwin-downloader.exe从网上下载大约180多个包。之后通过setup.exe安装并选择以通过本地的方式安装到C盘跟目录下。不要改名!
3.添加本机环境变量WebKitLibrariesDir=D:\WebKit-r116410\WebKit\Libraries\win 和 WebKitOutputDir=D:\WebKit-r136919\WebKitBuild 之后同样操作在添加到用户环境一次必须
4.以管理员身份运行Cygwin并且执行cd D: 回车 cd WebKit-r116410 回车 然后运行 Tools/Scripts/update-webkit 回车之后在运行 Tools/Scripts/update-webkit-support-libs 回车
VS2010打开工作
1.用VS2010打开Source\WebKit\win\WebKit.vcproj项目 等等转换完毕 打开每个项目并且修改C C++中的GENERAL下的TREAT WARNINGS AS ERROR = NO MULTI-PROCESSORCOMPILATION = YES 这个分别是关系警告报错和打开多线程编译 哦对了,不要忘记把平台工作设置成Platform Toolset = v80
2.查找StdLibExtras.h文件并创建StdLibExtras.cpp 内容为
void* operator new(size_t, NotNullTag, void* location)
{
ASSERT(location);
return location;
}
修改StdLibExtras.h为
void* operator new(size_t, NotNullTag, void* location); 并在JavaScriptCore QTMovieWin WebKitLib工程中加入StdLibExtras.cpp文件
-3.找到 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 (默认不需要设置,部分版本需要。)
4打开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"
#endif
5.在TestWebKitAPI工程的config.h(WebKitSource\Tools\TestWebKitAPI\config.h)首部添加:#define _ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH
6.从ICU4.0中找到LIB文件icuin.lib 和 icuuc.lib 复制到 WebKitLibraries\win\lib 下为 libicuin.lib 和 libicuuc.lib 并替换掉旧网站
7.在项目中搜索Look Up context menu item with selected word关键字,会找到两处!里面有全解引号。改为半解引号即可。
8.搜Asseritons.h 并加入#include <wtf\ExportMacros.h> [第一遍BUILD之后动态生成在D:\WebKit-r136919\WebKitBuild目录中并报错,找到所有这个文件加入修改在BUILD一次即可]
9.改WebKit.idl 中的#define __TYPELIB_VERSION__ __BUILD_NUMBER_MAJOR__##.##__BUILD_NUMBER_MINOR__ 为#define __TYPELIB_VERSION__ 0.1
BUILD开始
0.先编译 WTF
1.在编译 JAVASCRIPTCORE
2.在编译 WebCore
3.在编译 WebKit
4.在编译 WinLauncherLauncher
只要你们一步一步完全根据我的指导完成之后进行BUILLD保证不会出现一个问题 嘿嘿 如果出错 就查看一下哪里和我说的不一样!!
可以玩了。为了方便大家交流我在此广告一把 。请加入我的群256776188 互联网聊吧 输入WEBKIT申请进入。大家一起来研究。嘿嘿。