我正在尝试编译一个使用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中的路径与它所在的位置无关?
答案 0 :(得分:2)
您通常应该在项目中使用以下标题:
#include "rocksdb/db.h"
编译自己的项目时,应该将RocksDB包含路径添加到包含目录列表中。例如,如果RocksDB源代码位于目录../rocksdb-master
中,则包含路径将为../rocksdb-master/include
。
如何将编译器标志的include路径添加到编译器标志中确实是特定于编译器的。使用g ++或clang,可以在编译自己的程序时将-I../rocksdb-master/include
传递给编译器。请注意,您还需要链接RocksDB库。
最后,如果你使用一些高级概念,你可能需要包含更多的RocksDB标题,例如:交易。