如何将构建命令中的选项传递给Rust的依赖项?

编程语言 2026-07-12

在下面的 Makefile 中,我调用 cargo build,并附带一些自定义标志,例如 release 构建标志。于是,如果我把 cargo build --release 作为命令传入,所有的 crate.io 依赖以及本地依赖是否也会在 release 模式下被编译?基本上想知道传递给 cargo build 命令且位于 Makefile 内的所有标志,是否也会转发给 Cargo.toml 依赖?如果不是,我该如何实现?

Makefile

+$(CARGO) build $(BUILD_PARAMS) $(CARGO_TARGET_FLAG) $(CARGO_TARGET_ARCH) --package abc $(CARGO_BUILD_FLAGS_$(BUILD_TYPE))

Cargo.toml

[dependencies]
abc-lib = { path = "../abc-lib" } # this is local lib path, will this get compiled in release mode?
log = { version = "0.4", features = ["serde"] } # will this get compiled in release mode?

解决方案

是的,--release 会传播到所有依赖的crate。

更具体地说,--release 选择内置的 release profile。该配置将用于为所有编译产物构建(除非被覆盖)。因此,这将影响所有依赖项,无论它们是通过注册表包名、本地路径,还是Git仓库定义的。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章