Android でのビルド
2 つの genrule を作成します。1 つは CXX ヘッダーを生成し、もう 1 つは CXX ソースファイルを生成します。これらはその後、cc_library_static への入力として使用されます。
// lib.rs 内の Rust がエクスポートする関数に対する
// C++ バインディングを含む C++ ヘッダーを生成する。
genrule {
name: "libcxx_test_bridge_header",
tools: ["cxxbridge"],
cmd: "$(location cxxbridge) $(in) --header > $(out)",
srcs: ["lib.rs"],
out: ["lib.rs.h"],
}
// Rust が呼び出す C++ コードを生成する。
genrule {
name: "libcxx_test_bridge_code",
tools: ["cxxbridge"],
cmd: "$(location cxxbridge) $(in) > $(out)",
srcs: ["lib.rs"],
out: ["lib.rs.cc"],
}
cxxbridgeツールは、ブリッジモジュールの C++ 側を生成するスタンドアロンツールです。これは Android に含まれており、Soong ツールとして利用できます。- 慣例として、Rust のソースファイルが
lib.rsの場合、ヘッダーファイル名はlib.rs.h、ソースファイル名はlib.rs.ccになります。ただし、この命名規則は強制されません。