我有一个项目,它包含一些protobuf定义,并为多种语言(Python和Rust)构建代码。文件夹结构如下:
- 根目录/
- 原型/
- my.proto
- Python皮/
- rust /
- Cargo.toml
- build.rs
- ...
我使用prost从原文件中生成Rust代码。我的build.rs
看起来像这样:
use std::io::Result;
fn main() -> Result<()> {
prost_build::compile_protos(
// Files to be compiled
&["my.proto"],
// Include folder for protoc
&["../proto/"])?;
Ok(())
}
如果我运行cargo build
,这可以正常工作,但是它不能运行cargo publish
。在输出中,我看到publish
似乎在target
文件夹中创建了一个专用的package
子文件夹。protoc
还告诉我:
忽略../proto/,因为它不存在
我想知道为什么这对build
有效,而对publish
无效。有人能解释一下吗?它能解决吗?或者这种访问相对路径中的文件是个坏主意吗?
1条答案
按热度按时间c2e8gylq1#
您可以使用环境变量Cargo sets: