jl0*_*x61 12 protocol-buffers rust
我不知道如何使用生成代码prost_build
我已经阅读了文档,但他们没有给出生成代码的详细命令。\n我输入cargo build但没有生成代码。
我的build.rs
extern crate prost_build;\nfn main() {\n prost_build::compile_protos(&["src/items.proto"],\n &["src/"]).unwrap();\n}\n\nRun Code Online (Sandbox Code Playgroud)\n\n我的Cargo.toml
[package]\nname = "snazzy"\nversion = "0.1.0"\nauthors = ["xxx <xxx@xxx.com>"]\nedition = "2018"\nbuild = "build.rs"\n\n# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html\n\n[dependencies]\nbytes = "0.4"\nprost = "0.5"\n\n[build-dependencies]\nprost-build = { version = "0.4" }\nRun Code Online (Sandbox Code Playgroud)\n\n我的items.proto
syntax = "proto3";\n\npackage snazzy.items;\n\nmessage Shirt {\n enum Size {\n SMALL = 0;\n MEDIUM = 1;\n LARGE = 2;\n }\n string color = 1;\n Size size = 2;\n}\n\nRun Code Online (Sandbox Code Playgroud)\n\n我的文件树:
\n\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 build.rs\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Cargo.lock\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Cargo.toml\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 src\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 items.proto\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main.rs\nRun Code Online (Sandbox Code Playgroud)\n\n没有构建错误,但我看不到生成的代码在哪里。\n任何帮助将不胜感激!
\nSéb*_*uld 12
你是对的,文档中没有很好地解释这一点,这是因为构建脚本的工作方式所致。嗯,部分。
您的 protobuf 实现位于target/{yourArch}/build/{yourCrateName}-{hash}/out.
如果没有环境变量,这将非常难以实现。文档的重要部分是以下代码片段,突出显示了包含内容:
pub mod items {
include!(concat!(env!("OUT_DIR"), "/snazzy.items.rs"));
}
Run Code Online (Sandbox Code Playgroud)
这包括可用的文件OUT_DIR(上面指定的目录,在编译期间自动填写)和 protobuf 实现的名称(protobuf 文件中的包名称),并使其所有内容结构在crate::items.
文件驻留在构建目录中是有意义的,因为它们是构建工件。在您的板条箱文件夹中生成代码src会导致混乱,无论是版本控制还是项目健全性(您都会有重复的信息,并且 protobuf 实现,只要它是健全的,对于你。但是,功能蓝图是)。
| 归档时间: |
|
| 查看次数: |
4136 次 |
| 最近记录: |