/****************************************************************/
在研究cairo这个2D图形库的时候偶然发现了IseeBrowser这个PPC2003(是否能用在通用WINCE下还有待验证)下的开源浏览器,这是一个网名blackfrog的网友移植的(具体介绍见http://bbs.pdafans.com/thread-604419-1-1.html),它的内核是基于WebKit的。关于Webit很多人都知道,只是官方的代码好多库是Apple自己的,并没有开源;google的浏览器chorme分支也包括WebKit,只是过于庞大移植起来比较费力;QT倒是有WINCE版本的WebKit,不过从网上查到的信息来看运行的时候容易crash(未验证);而IseeBrowser从它的Demo来看只有8MB多,看来作者是对WebKit进行了大刀阔斧的裁剪以适应PPC2003版本(代码从http://code.google.com/p/iseebrowser/下载,不过更新到R7后就停止了),从它的说明来看移植和开发了如下的库:
cairo: 开源的跨平台矢量绘图软件库
expat: XML解析
freetype: 字体引擎
icu: 多语言,不过在R7换成了移植于QT的UNICODE库
libcurl: 实现了各种客户端协议的网络编程库
libiconv: 解决多语言编码处理转换等应用问题库
libjpeg
libpng
libxml: 换成了expat
libxslt: XML文件转换到HTML格式
pthread
sqlite3
zlib
wceshunt: 作者自己开发的,实现对部分标准C库和部分Win32函数的模拟
/****************************************************************/
现在言归正传,从code.google上下载了代码后,有一个简单的如何编译的说明文件,参照它进行并做适当调整才能成功编译,步骤及修改之处记录如下
1、工程都是VS2008而我只装了VS2005,要将所有的.sln和.vcproj稍做修改
2、下载cygwin,需要额外再安装bison(版本要低于2.4,否则编译的时候会出错)、gperf、perl、make
3、文档中说明要建立一个环境变量WebKit.iSee,但是没有说明代码放在哪里,如果按照SVN下来的代码目录直接编译是会提示找不到build-generated-files-js.sh或build-generated-files-wc.sh错误,这就是路径的问题。需要将带有“版本说明.txt”这个文件所有目录的所有文件拷贝到WebKit.iSee目录下才行。
4、工程libxslt会出现编译错误,将它unload。原因:部分类型定义和libxml有关联,而libxml换成了expat
5、修改wceshunt中的types.h,根据VS2005实际安装路径修改
6、忽略C4430错误
7、WebCoreSupport中的FrameLoaderClientISee.cpp中的ResourceRequest和系统有重定义问题,需要加上命名空间WebCore;另外有一个WebView.cpp同理
2012-1-17的补充
1、在D盘(根据实际情况定)新建目录iseebrowser(将它做为项目根目录,下同),用TortoiseSvn将代码下载到此目录下(会新建目录“ iseebrowser”,注意前面有一空格)
2、将iSee.sln的“Format Version 10.00”改为“Format Version 9.00”、“Visual Studio 2008”改为“Visual Studio 2005”,将方案中所有子工程文件(vcproj)中关于“Version="9.00"”改为“Version="8.00"”
3、按照项目中文档compile.txt所说建立环境变量WEBKITISEEDIR,相应的在D盘建目录“WebKit.iSee”
4、按照项目中文档compile.txt所说搭建cygwin(官方setup版本2.763、Cygwin DLL版本1.7.9-1),按默认方式安装后需要额外再安装bison(版本要低于2.4,否则编译的时候
会出错)、gperf、perl、make
5、将“版本说明.txt”所在同一目录下的文件(包括四个目录五个文件)拷贝到目录“WebKit.iSee”下,此目录同时也是进行编译的工作目录(从iSee工程的“Pre-Build Event”设置以及脚本build-generated-files-js.sh分析实际上SVN下载后建立的“ iseebrowser”才是真正的编译目录)
6、打开“WebKit.iSee”目录里的sln并在“Configure Manager”中将所有工程选择平台“Pocket PC 2003 (ARMV4)”,为了进行调试我选Debug模式而不是项目中complie.txt所说的Release
7、编译错误:将libxslt工程unload,因为它有大量的错误,这个工程其实是不需要的
8、编译错误:修改wceshunt下的types.h,将路径根据实际情况进行修改
9、编译到工程casqt和sqlite3的时候提示一些头文件找不到,这是因是原项目的一些头文件路径只在Release模式下有设置,如果要用Debug模式必须相应添加
10、编译工程sqlite3提示INVALID_FILE_ATTRIBUTES未定义,原因类似上一点,我在工程中加入USE_WCEEXTS_H宏定义后依然有这个问题,不记得原来是怎么解决的了,先将它unload。到这一步后,除了iSee(原因见下一点)、libxslt、sqlite3其它工程都能顺利编译了。
11、脚本执行错误:从VS2005的调试信息窗口可以看到cygwin执行build-generated-files-js.sh的输出信息,从现象分析应该是perl的版本不对了,因为我现在找不到当时的cygwin编译环境,现在没办法解决这个问题吧。而且这个版本cygwin的bison是2.4.2,我在之前有提到过bison不能高于2.4应该是当时的实测试结果。
12、假设iSee工程能够编译,则现在应该是进行到原贴的第6点了。当iSee编译完后,建立运行环境就参照原项目的complie.txt就可以了