I have a project that holds some protobuf definitions and builds code for multiple (Python and Rust) languages. The folder structure is like this:
- root/
- proto/
- my.proto
- python/
- rust/
- Cargo.toml
- build.rs
- ...
- proto/
I'm using prost to generate Rust code out of the proto files. My build.rs
looks like this:
use std::io::Result;
fn main() -> Result<()> {
prost_build::compile_protos(
// Files to be compiled
&["my.proto"],
// Include folder for protoc
&["../proto/"])?;
Ok(())
}
This works fine if I run cargo build
, but it does not work with cargo publish
. In the output I see that publish
seems to create a dedicated package
subfolder in the target
folder. protoc
also tells me:
ignoring ../proto/ since it does not exist
I wonder why this works with build
, but not publish
. Can somebody explain? Can it be solved or is this kind of accessing files in relative pathes a bad idea?