先下载源码和其他依赖,然后准备cygwin的环境,安装vs2013,最后编译即可。网上没有能直接用于最新版本源码编译的教程,所以我在编译过程中也遇到了很多坑。回过头来看,这些坑都是可以避免的,想要自己尝试编译的同学,可以根据本文快速的实现自己编译webkit(~除去下载文件的时间,15分钟准备环境,1小时编译完成)。
下载最近源码
最近的下载版本和源码在这里:
我使用的源码是这个版本built on 13 October 2014 and is a 45.9 MB:
安装Visual Studio 2013旗舰版
这里是第一个大坑,WTF项目的compiler.h宏里写死了必须用2012以上的版本才能编译(1800对应于2012,提示信息是建议使用2013):
C:\cygwin\home\kk\WebKit-r174650\Source\WTF\wtf\Compiler.h: 112 #endif 113 114: #if defined(_MSC_VER) && _MSC_VER < 1800 115 #error “Please use a newer version of Visual Studio. WebKit requires VS2013 or newer to compile.” 116 #endif
我开始想试着用vs2010或vs2015来编译webkit,都有很多问题,走了弯路。比如编译libGLESv2项目时需要用vs带的ctres.exe处理嵌入资源。如果系统有多个不同的vs版本,那么就可能互相影响而出问题。所以后来我索性卸载了VS2010、vs2015,重新下载安装了vs2013旗舰版。
~2.86G
KEY:BWG7X-J98B3-W34RT-33B3R-JVYW9 🙂
安装cygwin
cygwin 官方直接下载的cygwin-downloader.zip绑死了cygwin源,随机选择一个,都无法访问,很蛋疼,不能自动下载需要的169个lib~110M。建议使用163的源,需要先安装一个python2.7:
https://www.python.org/downloads/release/python-279/ ~18M
然后在源码文件夹下的WebKit-r174650\Tools\CygwinDownloader\ 修改cygwin-downloader.py添加一个新的163的源(改好的文件见):
mirror_servers = [““… package_mirror_url = mirror_servers[0];
最后执行:
python27.exe cygwin-downloader.py
脚本会自动下载所有的依赖,然后启动安装cygwin,默认安装在c:\cygwin。默认什么都不要动就一直下一步即可。
安装cygwin完了以后,把webkit源码解压到cygwin的用户目录下,比如我的是:
C:\cygwin\home\kk\WebKit-r174650
下载WebKitSupportLibrary.zip复制到WebKit-r174650\,别解压:
~1M
安装DirectX和QuickTime
安装DirectX SDK:注意这里不同用最新版本的SDK,只能用这个版本的。
?id=6812 ~571M
安装QuickTime SDK(这个玩意儿官方不维护已然找不到了)
~2M
准备环境
在开始-附件-命令行提示符上右键,以管理员身份运行。 进入命令行以后,执行VS安装目录下的设置环境命令:
“C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat”
接着进入cygwin安装目录,进入cyg命令行:
cd c:\cygwin cygwin.bat
此时可以用export命令查看vs120comntools,vsinstalldir,lib,include等关键变量是否设置好。
进入WebKit-r174650\Tools\Scripts,执行
cd ~/WebKit-r174650\Tools\Scripts ./update-webkit
(其实这一步可以不执行,使用上面百度盘里的WebKitAuxiliaryLibrary.zip复制到C:\cygwin\home\kk\WebKit-r174650\WebKitLibraries即可。)
如果出现“Couldn’t unzip WebKitAuxiliaryLibrary.zip.” 打开文件update-webkit-dependency文件,去掉两个curl的–sslv3参数。再重新执行update-webkit。
执行编译
编译之前,先改一处源码:找到WebKit-r174650\Source\WebCore\platform\LocalizedStrings.cpp文件,去掉250行和252行的字符串内的双引号。
开始编译:在cygwin的命令行环境下WebKit-r174650\Tools\Scripts路径下执行如下命令:
./build-webkit –release
然后等待约1小时,即可。如果中间有问题,下次编译会继续上次的做增量编译。 编译完成了以后,显示如下:
如果我们要debug模式的dll和exe,可以–debug。
./build-webkit –debug
可以看到debug版本编译花了52分钟31秒(debug项目比release多是因为有test项目)。
此时进入C:\cygwin\home\kk\WebKit-r174650\WebKitBuild\Release\bin32,,所有编译好的文件都在这里。比如我们做webkit开发用到的webkit.dll组件。
双击WinLauncher.exe即可看到webkit运行的效果:
总结参考
先知三日,富贵十年。