clucene win32下编译

之前用过clucene-core-0.9.21稳定版本分支,不过后来这个分支没人维护了,就换了github上的2.3.3.4最新版本。

win32下编译这个版本还是折腾的够呛,估计linux下不会出现该问题,还好总算编译过了mark下。0.9.21版本可以找到VC工程,直接可以编译。


参考过http://blog.csdn.net/p569354158/article/details/6835767这篇文章,但没有成功,具体原因没有细究,下面给出我的编译步骤。

1.编译boost库,我用的是1.50.0,为了方便系统查找,我把它编译到了C盘boost目录下,其实放到其他目录通过制定系统环境变量或者set变量应该也没问题。这里我是为了方便,围绕clucene做些东西才是重点。

运行.bat,会生成bjam.exe,运行bjam就完成了编译工作,大概10+minutes,傻瓜式操作。还有一种方式选择BoostPro进行二进制安装,不过这个网络安装比较慢。


2.我有编译好的zlib,但为了方便系统查找我还是用了二进制进行安装,链接http://sourceforge.net/projects/gnuwin32/files/zlib/1.2.3/zlib-1.2.3.exe/download,版本是1.2.3。


3.我把cmake也升级到了2.8.9,尽管我之前在低版本2.8上cmake-2.8\Modules\FindBoost.cmake上也加上了“1.50.0”,但还是没有成功,具体原因没再细究。


4.mkdir build,cd to build,cmake ..,然后用IDE编译连接就可以测试Demo了。


5.CMake跨平台写的不太好,win32下还是会查找unistd.h,为了编译我们可以自己写unistd.h放到安装目录VC/include下,内容如下

#ifndef _UNISTD_H_
#define _UNISTD_H_
//#include 
//#include 
#endif /*_UNISTD_H_*/

并且TestIndexSearch.cpp中两处usleep会编译不过去,win32没有该函数。有两个方法改之,简单的在头部添加#include <Windows.h>,两处usleep(9999)改为Sleep(9.999);

另一种方法添加宏

#ifdef _WIN32

#define usleep(_us)   Sleep(_us/1000)

#else

#define Sleep(x)   usleep(x*1000)

#endif


至此编译就完成了。之前用过但是现在基本没印象了,我想有必要熟悉下API,学习下源代码了。

有需要编译好的库的可以私信我 :-)

你可能感兴趣的:(linux,api,测试,ide,Build,跨平台)