当前项目使用C++开发Windows下使用的一个应用,由于需要涉及xml文件的读写,在进行选型后考虑使用libxml2实现(跨平台需求),当前最新的版本为:2.9.7。
阅读readme后,发现依赖libiconv(在其提供的编译命令中最好提供libiconv的lib&include文件,否则需要将这些文件放在libxml2目录中)。
cscript configure.js compiler=msvc prefix=c:\opt
include=c:\opt\include lib=c:\opt\lib debug=yes
#prefix 代表install的位置
#include & lib 代表依赖库的位置,此处基本就是指libiconv的lib文件和h文件
编译libiconv
网上找了一些资料后,发现很多同行都去建了vs项目完成编译(我也尝试用了一下,但有些编译的有问题,编译libxml2时报错),但我阅读libiconv (当前最新的版本为:1.15)的readme时,其已指明可以直接通过make完成编译工作(不支持ms的nmake),而且操作步骤非常详细,亲测可用。
在windows下编译libiconv需要安装cygwin环境,本质上应该是通过cygwin中的make命令完成整个编译工作。
安装cygwin时需要安装如下内容:
make
vim(可选)
(32-bit binaries):
mingw64-i686-gcc-core,
mingw64-i686-headers,
mingw64-i686-runtime
(64-bit binaries):
mingw64-x86_64-gcc-core,
mingw64-x86_64-headers,
mingw64-x86_64-runtime
完成上述cygwin安装后,详细安装libiconv提供的readme完成所有操作即可(这里会要求具备一些linux知识),编译后的输出文件在lib/.libs中。
下面步骤为准备编译libxml2:
- 将编译输出的文件复制到c:\opt\lib中
注:此时编译出的lib文件名为:iconv.dll.lib,在libxml2的makefile中写为iconv.lib,因此需要将iconv.dll.lib改名为iconv.lib。 - 将iconv.h文件复制到c:\opt\include中
编译libxml2
libxml2可以使用ms的nmake完成编译,按照libxml2的win32/readme.txt描述的步骤操作即可。
cscript configure.js compiler=msvc prefix=c:\opt
include=c:\opt\include lib=c:\opt\lib debug=yes
nmake /f Makefile.msvc
nmake install
#执行上述命令后,在c:\opt\bin中就会出现libxml2.dll等文件,如果没有执行install,则在win32\bin.msvc中也可以找到。
总结
还是那句:网络上的信息未必准确(或者已经过了时效),还是多阅读官方的readme比较好,而且这个过程中还能学到很多知识,花费点时间完全是值得。