2017-06-05 21 views
0

Bazelを使用して.protoファイルを含むプロジェクトをビルドする場合、バイナリを作成するために、たとえばgo_binarygo_proto_libraryのルールを使用できます。生成されたバイナリは期待通りに動作しますが、ファイル.protoから生成されたコードは作業ディレクトリにありません。Bazelビルド、プロトタイプ、コード補完

その結果、エディタとIDEでのコード補完は機能しません。さらに悪いことに、彼らはしばしば無効なインポートステートメントに関するエラーを出力します。

これはプロトコルバッファを使用した例ですが、サードパーティの依存関係の使用など、他の同様のケースが考えられます。

通常どのように処理されますか?

答えて

1

私はBazelのGoルールに取り組んでいるエンジニアの一人です。残念ながら、私は今あなたのために良い答えがありませんが、この問題はレーダー上にあり、Goチームは一般的な長期的な解決に取り組んでいます。私はbazelbuild/rules_go#512をGitHubリポジトリに提出してこの問題を追跡しました。私たちがより良い解決策を持っているときにこの回答を更新します。

問題は、Bazelが生成したコードや他のアーティファクトを、編集者が認識していない内部ディレクトリに保存することです。 Bazelと直接統合することなく、リポジトリ内のすべてのソース、生成されたファイル、パッケージ、インポート、および他のメタデータをツール(エディタ、IDE、専門家のようなツール)が理解できる新しいワークスペース抽象化メカニズムを設計して構築していますまたは他のビルドシステム。

一時的な回避策として、protocを使用して手動で.pb.goファイルを生成してみてください。これらのファイルはリポジトリにチェックインできますが、BUILDファイルには含まれません。これにより、エディタやIDEに生成されたファイルが認識されるはずですが、コンパイル時に最新のバージョンが生成されます。

関連する問題