Building in Android
genrule を 2 つ作成します。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
となります。ただし、この命名規則は強制ではありません。