Я пытаюсь выполнить кросс-компиляцию проекта (библиотека TensorFlow C), используя Bazel с инструментарием кросс-компиляции. После большого отчаяния (но это уже другая история) мне наконец удалось получить фактическую компиляцию внешних зависимостей (например, zlib или protobuf) для работы с моей цепочкой инструментов, однако теперь я получаю пропущенных объявлений зависимостей для все системные заголовки (предоставляемые кросс-компиляцией), которые включены в скомпилированное правило, генерирующее эту ошибку.
Эта точная ошибка описана в руководстве Bazel для настройки C ++ toolchains ( в самом низу в шаге 10). Они также предлагают исправление, которое состоит в добавлении feature
к CcToolchainConfigInfo
, который добавляет каталоги системных заголовков с помощью флагов -isystem
.
Проблема, которая у меня возникла с этим исправлением является то, что я не могу добавить абсолютные пути этих каталогов, как описано, так как это вызывает эту ошибку: Путь включения ... ссылается на путь вне выполнения root.
Вместо использования абсолютных путей, я также попытался объявить новых локальных репозиториев в моих WORKSPACE
с filegroups
и cc_libraries
, в которых перечислены пути в их srcs
/ hdrs
/ includes
и ссылки на эти filegroups
/ cc_libraries
в флагах -isystem
, но ни одна из моих попыток не сработала. Возможно, я не сделал это правильно, но я попробовал много вариантов.
Если я не могу добавить абсолютные пути или заставить его работать в локальных репозиториях, то каков правильный способ сделать это?