我正在尝试编译一个使用 rocksdb 的程序。
根据官方网页中的示例,我应该添加到我的代码中的唯一 header 是 db.h。
现在,我正在编译的文件在文件夹 A 中。 然而,db.h 在 A/rocksdb-master/include/rocksdb/中。
所以,我将这一行添加到我的文件中:
#include "rocksdb-master/include/rocksdb"
它找到了文件,但问题是在 db.h 中,我有这一行:
#include "rocksdb/metadata.h"
当我编译时出现这个错误:
fatal error :rocksdb/metadata.h: 没有那个文件或目录 #include "rocksdb/metadata.h"
我的意思是,这很明显。 db.h 与 metadata.h 在同一个文件夹中,所以编译器找不到任何 rocksdb 文件夹也没关系。但我怀疑编写这个库的人不知道这一点。
有没有其他方法可以添加编译路径? 为什么 db.h 的路径不是相对于它所在的位置?
最佳答案
您通常应该在您的项目中使用以下 header :
#include "rocksdb/db.h"
当编译你自己的项目时,你应该将 RocksDB include 路径添加到 include 目录列表中。例如,如果 RocksDB 源代码位于目录 ../rocksdb-master
中,则包含路径将为 ../rocksdb-master/include
。
如何将包含路径添加到编译器标志确实是特定于编译器的。使用g++或clang,在编译自己的程序时通过将-I../rocksdb-master/include
传递给编译器来完成。请注意,您还需要链接到 RocksDB 库。
最后,如果您使用它的一些高级概念,例如,您可能需要包含更多 RocksDB header 。交易。
关于c++ - 无法编译 rocksdb,找不到依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32320277/