Как объединить аспекты Bazel и cc_library

Я хочу построить правило, которое очень похоже на cc_proto_library, Ключевые особенности в том, что он будет применять аспект ко всем переходным proto_library зависимости и генерировать .cc а также .h файлы для всех зависимостей. Кроме того, он будет генерировать действия, которые скомпилируют их в объектные файлы.

Хотя я понимаю, как я могу сделать генерацию файла, я не вижу, как легко сделать генерацию объекта. Собственный модуль недоступен для реализаций правила (или аспекта), и я не могу использовать макрос поверх аспекта, так как мне нужно, чтобы объектные файлы были сгенерированы в том же пакете, что и proto_library так что он генерируется только один раз.

cc_proto_library я могу сделать это, потому что он написан не на жаворонке и поэтому имеет доступ к большему количеству примитивов. Есть ли способ сделать это только с жаворонком?

1 ответ

К сожалению, в настоящее время это невозможно. В правилах / действиях C++ отсутствует API-интерфейс Skylark (то, что мы называем сэндвичем C++). Мы планируем реализовать это в первом квартале 2018 года. Существует много проблем с отслеживанием, эта из которых выглядит наиболее актуальной: https://github.com/bazelbuild/bazel/issues/2163.

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