Был указан путь включения, но по-прежнему не удалось включить заголовок в путь в проекте Bazel C++

У меня есть проекты с такой структурой каталогов

      ---root
|  |--src
|    |--project1
|      |--model
|      |  |--incude
|      |  |  |--model
|      |  |    |--modelA.hpp
|      |  |    |--modelB.hpp
|      |  |--modelA.cpp
|      |  |--modelB.cpp
|      |  |--BUILD #1
|      |...
|      |--view
|      |...
|      |--common
|      |  |--include
|      |    |--common
|      |      |--data_type.hpp 
|      |--BUILD #2
|--WORKSPACE

Поскольку у меня есть другой пакет в этом проекте, и некоторые из них используют один и тот же самоопределяемый тип данных, я определил их в пакете с именемcommon.

Теперь я включаюdata_type.hppв файлеmodelA.hpp

      ...
#include "common/data_type.hpp
...

Ссылаясь на пример stage3 в руководстве ,BUID(№1) вот так

      cc_library(
  name = "modelA",
  hdrs = "include/model/modelA.hpp",
  deps = ["//src/project/common:data_type"],
  copts = ["-Isrc/project/common/include"],
)

иBUILD(# 2), который определяет модуль зависимостиdata_typeэто так

      cc_library(
  name = "data_type",
  hdrs = ["include/common/data_type.hpp"],
  visibility = ["//visibility:public"],
)

Однако, когда я построил код, я получил

      src/project/model/include/model/modelA.hpp: fatal error: common/data_type.hpp: No such file or directory

Почему я определилcopts = ["-Isrc/heimdallr/common/include"]но все еще есть эта ошибка?

1 ответ

Пожалуйста, проверьте раздел проверки включения заголовковправил C/C++ из документа Bazel. Относительно каталога рабочей области должны быть созданы все включаемые пути. Пожалуйста, обратитесь к этому вопросу для получения дополнительной информации. Спасибо!

Другие вопросы по тегам