如何在我的C ++项目中使用RediSearch库?

时间:2019-02-12 00:54:24

标签: c++ cmake redisearch

我正在开发一个利用RediSearch的C ++项目。我希望能够使用CMake以类似于#include <redisearch/document.h>的形式调用RediSearch函数,而不必更改RediSearch项目。

这个问题应该适用于将CMake与任何外部CMake项目一起使用,但是我发现的内容仅针对特定的一组项目,或者根本行不通。

尝试

我尝试使用ExternalProject,例如在this project中使用配置文件,并尝试使用find_package()this project中,直接使用add_subdirectory和{{1 }},直接链接到src /文件夹,等等。

我也尝试过在我的CMakeLists.txt中添加以下行

target_link_libraries

但收到以下错误:

set(RS_INCLUDE_DIR libs/RediSearch/src)

set(GCC_COVERAGE_COMPILE_FLAGS "-I${RS_INCLUDE_DIR} -Wall -g -fPIC -O0")
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} ${GCC_COVERAGE_COMPILE_FLAGS}")

include_directories(${RS_INCLUDE_DIR})

导致的错误包括但不限于:

  • 在使用CMakeFiles/prjct.dir/src/main.cpp.o: In function `RedisModule_Init': .... collect2: error: 1d returned 1 exit status .... 时(如上述项目中所述)无法找到包并出现错误,例如:
    • find_package
    CMake Error at /opt/cmake-3.13.3-Linux-x86_64/share/cmake-3.13/Modules/FindPackageHandleStandardArgs.cmake:137
    Could NOT find RediSearch (missing: RediSearch_INCLUDE_DIR)
    Call Stack (most recent call first):
    /opt/cmake-3.13.3-Linux-x86_64/share/cmake-3.13/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE)
    cmake/FindRediSearch.cmake:27 (find_package_handle_standard_args)
    CMakeLists.txt:48 (find_package)
    
  • 如果CMake没有给出任何错误,则进行以下操作:

要详细说明我的项目结构:

redisearch/document.h: No such file or directory

我想从prjct | src/ | | main.cpp | include/ | | prjct/ | | | myheader.hpp | libs/ | | RediSearch/ <- As git submodule | cmake/ | | prjctConfig.cmake.in | CMakeLists.txt 之类的任何src/文件中,以main.cpp的形式利用RediSearch(或就此而言,将使用CMake构建的任何项目)。我根本不想更改RediSearch文件或配置-一切都应该通过我的项目进行。

注意:我正在使用cmake版本3.13.3

0 个答案:

没有答案