我正在尝试按照instructions生成Rust protobuffer文件:
用于生成.rs文件的API
用于生成要使用的
.rs
个文件的API。 G。 from build.rs示例代码:
extern crate protoc_rust; protoc_rust::run(protoc_rust::Args { out_dir: "src/protos", input: &["protos/a.proto", "b.proto"], includes: &["protos"], }).expect("protoc");
在
Cargo.toml
:[build-dependencies] protoc-rust = "1.4"
请注意,此API需要
protoc-gen-rust命令。protoc
中的$PATH
命令。虽然
没有明确的文档说明这些参数的传递内容。第一个(out_dir
)显然是生成文件的目录。input
看起来像用于生成的.proto
文件列表。在这个例子中,第一个有一个目录,而第二个没有。我是否需要为每个目录或第一个目录传递一个目录? includes
让我很困惑。这是要查看的文件夹列表吗?如果我在此处添加protos
,我可以针对input
的元素省略它吗?
答案 0 :(得分:6)
如果查看源代码(source),您会看到:
#[derive(Debug, Default)]
pub struct Args<'a> {
/// --lang_out= param
pub out_dir: &'a str,
/// -I args
pub includes: &'a [&'a str],
/// List of .proto files to compile
pub input: &'a [&'a str],
}
所以这些论点的意思是:
out_dir
:生成文件的位置
includes
(-I
):protoc将搜索导入的位置(documentation)
input
:要编译的.proto
个文件列表