参考:http://blog.csdn.net/lizzywu/article/details/11898159
折腾了几天终于把webkit在window上编译成功!
1.编译时的准备工作:
Cygwin:官方提供的,
(http://svn.webkit.org/repository/webkit/trunk/WebKitTools/CygwinDownloader/cygwin-downloader.zip),一定要用这个来安装cygwin环境.
其他版本的cygwin的perl和python工具不完整,cygwin的perl、python工具和window版本的perl python最好不要混用。
cygwin最好默认安装在c:/cygwin目录下,保证perl、python、curl、unzip工具
QuickTime SDK:
http://download.csdn.net/detail/zxncvb/3742895
WebKit:
vs2010==>WebKit-r156224.tar.bz2 http://nightly.webkit.org/builds/trunk/src/27
vs2008==>WebKit-r98912.tar.bz2 http://nightly.webkit.org/builds/trunk/src/80
2.VS2010编译步骤
我采用release 版本编译, 如果要编译debug版本,如果你编译的是debug版,可能要将WebKitLibraries\win\lib里面的lib文件加_debug,例如将CoreFoundation.lib.lib改为CoreFoundation.lib_debug.lib.
(1) 设置环境变量
系统环境变量中设置PATH c:\cygwin\bin
set WEBKIT_DIR =/cygdrive/e/android/webkit/WebKit-r156224
set WEBKITLIBRARIESDIR = %WEBKIT_DIR%/WebkitLibraries/win
set WEBKITOUTPUTDIR = %WEBKIT_DIR%/WebKitBuild
set VS90COMNTOOLS=E:/vs/Microsoft Visual Studio 10.0/Common7/Tools
set WEBKIT_LIBRARIES=%WEBKIT_DIR%/WebkitLibraries
在我的电脑=》属性=》高级系统设置上面添加。
注意:http://developer.apple.com/opensource/internet/WebKitAuxiliaryLibrary.zip 已经改为:https://developer.apple.com/opensource/internet/WebKitAuxiliaryLibrary.zip
(3) 在WebKit/webkit/tools/scripts/目录下执行./build-webkit, 更新WebKitSupportLibrary.zip.
这一步会报很多错误,不过不要紧,看懂perl脚本。跑到相应的perl脚本文件去修改和使用printf 调试他,大部分的问题都可以解决。
(3)步可能会出现WebKitSupportLibrary.zip is out of date, 重新从http://developer.apple.com/opensource下载,放到WebKit目录下.
(4)使用vs2010打开WebKit.sln文件,设置Release版本进行版本转换和编译.
遇到问题:按照提示信息去修改,编译时主要调用cygwin生成源码和vs的nmake工具编译。注意的bat 环境变量和工具调用是否冲突。
(5)编译结束成功
(6)编译完成后,需要安装Safari浏览器,将C:\Program Files\Common Files\Apple\Apple Application Support下的一些库文件拷贝到C:\cygwin\home\WebKit\WebKitBuild\Release\bin目录.
注:C:\cygwin\home\WebKit\WebKitBuild为我的webkit代码目录.
编译结果:
bin目录:
运行MiniBrowser.exe:
运行WinLauncher.exe
编译顺序:
这5个目录的编译顺序基本是:Javascript Folder-》WebCore Folder-》WebkitCom Folder-》Webkit2 Folder-》Tools
3.编译时遇到到的问题
1.如果以前安装过Perl,Python等脚本语言,请卸载干净。这些语言可能与Cygwin自带的脚本语言冲突,不能正常编译.
我机器上原来装过Python2.6.6,出现了类似此类的错误: " can't open file '/home/WebKit/Source/JAVASC~1/KeywordLookupGenerator.py': [Errno 2] No such file or directory".
2. error C2220:警告被视为错误 - 没有生成"object"文件
可以点击工程项目,右击选择属性->配置属性->c/c++->常规, 将"警告视为错误"的选项改为"否".
3. 屏蔽警告信息 , 一大堆C4396警告信息, 看的头大.
可以点击项目,右击选择属性->配置属性->c/c++->常规,修改警告级别.
4. 在编译WebCore项目工程时 常量中有换行符错误
6>DefaultLocalizationStrategy.cpp
6>..\platform\DefaultLocalizationStrategy.cpp(345) : error C2001: 常量中有换行符
6>..\platform\DefaultLocalizationStrategy.cpp(347) : error C2001: 常量中有换行符
6>..\platform\DefaultLocalizationStrategy.cpp(345) : fatal error C1057: 宏展开中遇到意外的文件结束
修改方法:
RetainPtr<CFStringRef> selectedCFString(AdoptCF, truncatedStringForLookupMenuItem(selectedString).createCFString());
return formatLocalizedString(WEB_UI_STRING("Look Up %@ ", "Look Up context menu item with selected word"), selectedCFString.get());
#else
return WEB_UI_STRING("Look Up "<selection>" ", "Look Up context menu item with selected word").replace("<selection>", truncatedStringForLookupMenuItem(selectedString));
5.出现cmd.exe错误,比如
9>项目 : error PRJ0002 : 错误的结果 1 (从“C:\WINDOWS\system32\cmd.exe”返回)。
9>生成日志保存在“file://C:\cygwin\home\WebKit\WebKitBuild\Release\obj\WebKitLib\BuildLog.htm”
9>WebKitLib - 1 个错误,0 个警告
解决方案: 首先把此工程重新编译, 可能是你编译这个工程之前的那个工程没有正常编译完成,造成之后编译所有的工程都有这样的错误.
6.所有的工程编译通过,出现缺少dll库文件
解决方案:网上搜索或直接安装safari,找到相应的库文件,放到可执行文件的目录中.
比如这个dll库没有找到:
注意这边我又使用 Apple Software Update 更新了下apple的软件,因为我在C:\Program Files\Common Files\Apple\Apple Application Support目录下找不到这个库文件.
需要更新的有iTunes、Safari 5、 QuickTime对应的版本分别为10.5、5.1.1、7.1.1.
更新完毕后就找到了缺失的dll文件.
CFNetwork.dll、CoreFoundation.dll、pthreadVC2.dll、objc.dll、libdispatch.dll、libicuin.dll、libicuuc.dll、icudt46.dll、ASL.dll、SQLite3.dll、zlib1.dll
7、出现错误:Failed to determine path to AAS directory
修改Tools\win\DLLLauncher\DLLLauncherMain.cpp源码设置Safari路径。
http://blog.sina.com.cn/s/blog_5f432e6a01010mih.html
附上结果图: