Не могу скомпилировать rockdb, зависимости не найдены

Я пытаюсь скомпилировать программу, которая использует rocksdb.

Согласно примеру на официальной веб-странице, единственный заголовок, который я должен добавить к своему коду, это db.h.

Теперь файл, который я компилирую, находится в папке А.
однако 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

Решение

Обычно вы должны использовать только следующий заголовок в вашем проекте:

#include "rocksdb/db.h"

При компиляции вашего собственного проекта вы должны затем добавить путь включения RocksDB в список включаемых каталогов. Например, если исходный код RocksDB находится в каталоге ../rocksdb-masterпуть включения будет ../rocksdb-master/include,

Как добавить путь включения в флаги компилятора, действительно зависит от компилятора. С g ++ или clang это делается путем передачи -I../rocksdb-master/include компилятору при компиляции вашей собственной программы. Обратите внимание, что многие из вас также должны ссылаться на библиотеку RocksDB.

И, наконец, вам может понадобиться добавить еще несколько заголовков RocksDB, если вы используете некоторые из его передовых концепций, например, сделки.

2

Другие решения


По вопросам рекламы [email protected]