Как правильно включить прототип файла в C ++? - PullRequest
0 голосов
/ 13 февраля 2020

Я пытаюсь выучить C ++, но мне не удается выполнить некоторые базовые c шаги, такие как этот. У меня есть файл .proto, который должен быть включен из файла. cc.

Я добавил строку:

#include "path/to/my/protofile.pb.h"

Я отредактировал соответствующий файл BUILD, добавив:

proto_library(
    name = "protofile_proto",
    srcs = ["//path/to/my:protofile.proto"],
    visibility = [
        "//visibility:public",
    ],
)

Когда я пытаюсь скомпилировать его, я получаю следующее ошибка:

path/to/my/ccfile.cc
fatal error: 'path/to/my/protofile.pb.h' file not found

Есть идеи о том, как заставить компилятор найти файл proto во время сборки? Заранее спасибо.

1 Ответ

0 голосов
/ 13 февраля 2020

Когда вы используете двойные кавычки " в #include, путь является относительным от самого исходного файла. И если он не найден, то компилятор будет искать в своем списке стандартных (и нестандартных) каталогов, чтобы найти файл заголовка.

Так что есть два альтернативных решения для вас:

  1. Убедитесь, что вы указали правильный относительный путь из исходного файла; Или
  2. Добавьте подходящую директорию в список компиляторов, обычно используя опцию -I (в верхнем регистре i) (обратите внимание, что для этого вы также можете использовать <> вместо двойных кавычек)

В зависимости от системы сборки вам необходимо добавить path/to/my/protofile.pb.h в качестве зависимости для исходного файла, чтобы убедиться, что он генерируется до того, как сам исходный файл будет передан компилятору.

...