Building in Android

두 개의 genrule을 만듭니다. 하나는 CXX 헤더를 생성하고 다른 하나는 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가 됩니다. 그러나 이 이름 지정 규칙은 강제되지 않습니다.