首页 > 解决方案 > 如何使用我的 C++ 项目中的 RediSearch 库?

问题描述

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

这个问题应该适用于将 CMake 与任何外部 CMake 项目一起使用,但我发现的只是特定于一组项目或根本不起作用。

尝试

我尝试在这个项目中使用ExternalProject,例如在这个项目中使用配置文件和find_package()这个项目中,直接使用add_subdirectoryand target_link_libraries,直接链接到 src/ 文件夹等。

我也尝试在我的 CMakeLists.txt 中包含以下几行

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
.... 

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

详细说明我的项目结构:

prjct
| src/
| | main.cpp
| include/
| | prjct/
| | | myheader.hpp
| libs/
| | RediSearch/     <- As git submodule
| cmake/
| | prjctConfig.cmake.in
| CMakeLists.txt

我想从任何src/文件(例如main.cpp)中以#include <redisearch/document.h>. 我根本不想更改 RediSearch 文件或配置 - 一切都应该通过我的项目进行。

注意:我使用的是 cmake 版本 3.13.3

标签: c++cmakeredisearch

解决方案


推荐阅读