私はCMakeからBazelに移行しているプロジェクトに取り組んでいます。私たちが明らかに契約で失っている重要な機能の1つは、他の(必ずしもBazelではない)プロジェクトで使用できるようにプロジェクトをインストールできることです。bazelでビルドされたプロジェクトをインストールするにはどうすればよいですか?
AFAICTでは、現在、プロジェクトをインストールするための組み込みサポートはありません。
プロジェクトをインストールするには、ポータブル(少なくともLinuxとMacOSで動作する必要があります)の方法を作成する必要があります。具体的には、
- インストールが必要なライブラリ、ヘッダー、実行ファイル、その他のファイル(例:
LICENSE
)を指定する必要があります。 - ユーザーはアブソリュート接頭辞を指定してインストールする必要があります。
- Bazelが混乱することなく、毎回違う接頭語を付けて、実際にインストールを実行することができるはずです(つまり、インストール済みのファイルを "覚えよう"そうであれば、接頭辞が前回と異なる時を理解しなければならない)。
- ライブラリを適切な場所(たとえば
lib64
)にインストールするか、ユーザーが正しいlibdirを指定できるようにする必要があります。 - インストール手順は、変更されていない以前のインストールのファイルのタイムスタンプに触れてはいけません。 (理想的には、Bazel自身がこれを処理するだろう。。。
install
コマンドを使用すると、トリッキーで、潜在的な移植性の問題を持っているノートプラットフォーム要件を、上記)
これを行うことについて移動する最良の方法は何ですか?
私はこの答えに続いていくつかの問題を抱えていましたが、これを見ると、これは基本的に私がやったことです。私が最後にしたことについては[my PR](https://github.com/RobotLocomotion/drake/pull/6072)を参照してください。 (しかし、それ以上の変更点を確認してください。これまでに少なくとも1つのバグが見つかりました...) 私の "実行可能ファイル"は、私がインストールアクションを挿入するテンプレートから生成するPythonスクリプトです。 – Matthew