Function protoc_fetcher::protoc
source · pub fn protoc(version: &str, out_dir: &Path) -> Result<PathBuf>
Expand description
Downloads an official release of the protobuf compiler (protoc) and returns the path to it.
The release archive matching the given version
will be downloaded, and the protoc binary will
be extracted into a subdirectory of out_dir
. You can choose a version
from the
release page, for example “21.2”. Don’t prefix it with a “v”.
out_dir
can be anywhere you want, but if calling this function from a build script, you should
probably use the OUT_DIR
env var (which is set by Cargo automatically for build scripts).
A previously downloaded protoc binary of the correct version will be reused if already present
in out_dir
.
§Examples:
// From within build.rs...
let out_dir = env::var("OUT_DIR").unwrap();
let protoc_path = protoc_fetcher::protoc("21.2", Path::new(&out_dir));
If you are using tonic-build (or prost-build), you can instruct it to use the fetched
protoc
binary by setting the PROTOC
env var.
env::set_var("PROTOC", &protoc_path);
tonic_build::compile_protos(path_to_my_protos);