用cmake 编译 xcode用的clucene静态库(一)

第一步下载源代码 http://sourceforge.net/projects/clucene/ 

第二步、下载cmakehttp://www.cmake.org/cmake/resources/software.html 

编译

第一步,打开在应用程序中的cmake GUI程序,设置好源代码路径,和输出路径,如图: 


用cmake 编译 xcode用的clucene静态库(一)_第1张图片

        第二步,点击Configure,在弹出的界面中直接点击Done,如图:

用cmake 编译 xcode用的clucene静态库(一)_第2张图片
 

等待cmake配置各种信息,这一过程可能需要几分钟。配置完成如图:

用cmake 编译 xcode用的clucene静态库(一)_第3张图片
 

第三步,配置参数,这一步非常重要。
1 由于iOS只支持静态库,所以要勾选BUILD_STATIC_LIBRARIES选项。
2 设置CMAKE_OSX_ARCHITECTURES为armv7或ARCHS_STANDARD_32_BIT(根据Xcode版本可能是:armv6,armv7;armv7,armv7s),因为默认是针对Mac的。
3 设置CMAKE_OSX_SYSTOOT为iOS的sdk,iPhoneSimulator或iPhoneOS

用cmake 编译 xcode用的clucene静态库(一)_第4张图片
 

第四步,点击Generate,很快就会在指定的输出目录下生成需要的Xcode项目。

用cmake 编译 xcode用的clucene静态库(一)_第5张图片
 


如果生成的Xcode项目还是针对Mac的,可能需要再Configure一次试试。


接下来就是编译clucene-core-static和clucene-shared-static两个静态库了。
打开生成的clucene工程,可能需要调整一下Base SDK和Architectures设置。
scheme选择clucene-core-static,编译,结果有12个警告和4个错误。警告大部分是继承时虚拟函数被隐藏和变量未使用,先不去管它。
错误是“ Variable has incomplete type 'struct stat64' ”。调查一番,发现这个结构是关于文件的状态信息的。但是iOS使用的是“struct stat”而不是“struct stat64”。而clunene的cmake生成规则可能没有考虑到iOS的情况,导致编译时找不到定义。
解决办法是手动修改src/shared/CLucene目录下的_clucene-config.h文件,将59-60行的stat64改为stat,将64行的fstat64改为fstat。改完之后就可以通过编译了,在bin目录下生成了对应的静态库。

你可能感兴趣的:(用cmake 编译 xcode用的clucene静态库(一))