• iOS版全文检索库编译方法


    http://www.cocoachina.com/applenews/devnews/2013/0523/6262.html
    公司的一个新的项目有iOS和android两个版本。其中的数据库是java那边生成的,为了支持全文检索,java的同事使用了Lucene(java端全文检索引擎工具包 http://lucene.apache.org )。
     
    先调查一下在iOS上能不能使用Lucene吧。
     
    在github上找到两个Objective-c版本的Lucene:LuceneKit和S4LuceneLibrary,后者是在前者的基础上实现的。可是他们支持的Lucene版本太低了,试了一下第二个,不能直接使用java生成的Lucene数据。
     
    于是想到有没有c或c++版的Lucene?还真有——Clucene,据说和java版比较兼容。那就试试吧。
     
    下载源代码( http://sourceforge.net/projects/clucene/ ),发现需要使用cmake来编译。
     
    好吧,先下载cmake for mac( http://www.cmake.org/cmake/resources/software.html ),安装。
     
    起初,看Clucene的的安装说明,需要使用命令行,配置各种参数,毫无头绪,好头疼。
     
    再仔细看了看说明,原来cmake还有GUI,安装时没注意。赶紧打开,添加源代码路径,目标路径,配置,生成。结果生成的Xcode项目是针对mac的,iOS没法用。
     
    看来配置的不对,参考github上有人做过的一个项目clucene-iOS,几经周折,终于生成了正确的Xcode项目。
     
    下面就来详细介绍一下生成过程。
    第一步,打开在应用程序中的cmake GUI程序,设置好源代码路径,和输出路径,如图: 
     
    第二步,点击Configure,在弹出的界面中直接点击Done,如图:
     
     
    等待cmake配置各种信息,这一过程可能需要几分钟。配置完成如图:
     
    第三步,配置参数,这一步非常重要。
    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
     
    第四步,点击Generate,很快就会在指定的输出目录下生成需要的Xcode项目。
     
    如果生成的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目录下生成了对应的静态库。
  • 相关阅读:
    PHP mysqli_error() 函数
    PHP mysqli_error_list() 函数
    PHP mysqli_errno() 函数
    PHP mysqli_dump_debug_info() 函数
    PHP mysqli_data_seek() 函数
    PHP mysqli_debug() 函数
    PHP mysqli_connect() 函数
    PHP mysqli_connect_errno() 函数
    PHP mysqli_connect_error() 函数
    PHP mysqli_commit() 函数
  • 原文地址:https://www.cnblogs.com/xuvw/p/3094347.html
Copyright © 2020-2023  润新知