Как объединить аспекты 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.