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"], }

Speaker Notes

  • cxxbridge ツールは、ブリッジ モジュールの C++ 側を生成するスタンドアロン ツールです。Android に組み込まれており、Soong ツールとして利用できます。
  • 慣例として、Rust ソースファイルが lib.rs の場合、ヘッダー ファイルの名前は lib.rs.h、ソースファイルの名前は lib.rs.cc となります。ただし、この命名規則は強制ではありません。