无法编译rocksdb,找不到依赖项

时间:2015-08-31 21:29:40

标签: c++ dependencies rocksdb

我正在尝试编译一个使用rocksdb的程序。

根据官方网页中的示例,我应该添加到我的代码中的唯一标题是db.h。

现在,我正在编译的文件位于文件夹A. db.h但是在A / rocksdb-master / include / rocksdb /.

所以,我将这一行添加到我的文件中:

#include "rocksdb-master/include/rocksdb"

它找到了文件,但问题是在db.h中,我有这一行:

#include "rocksdb/metadata.h"

当我编译时,我得到了这个错误:

致命错误:rocksdb / metadata.h:没有这样的文件或目录  #include" rocksdb / metadata.h"

我的意思是,这很明显。 db.h与metadata.h位于同一个文件夹中,因此编译器无法找到任何rocksdb文件夹。但我怀疑写这个图书馆的人不知道。

还有其他方法可以添加路径进行编译吗? 为什么db.h中的路径与它所在的位置无关?

1 个答案:

答案 0 :(得分:2)

您通常应该在项目中使用以下标题:

#include "rocksdb/db.h"

编译自己的项目时,应该将RocksDB包含路径添加到包含目录列表中。例如,如果RocksDB源代码位于目录../rocksdb-master中,则包含路径将为../rocksdb-master/include

如何将编译器标志的include路径添加到编译器标志中确实是特定于编译器的。使用g ++或clang,可以在编译自己的程序时将-I../rocksdb-master/include传递给编译器。请注意,您还需要链接RocksDB库。

最后,如果你使用一些高级概念,你可能需要包含更多的RocksDB标题,例如:交易。

相关问题