为啥定义 RUSTFLAGS 会导致 .cargo/config 中的 rustflags 被忽略?
Posted
技术标签:
【中文标题】为啥定义 RUSTFLAGS 会导致 .cargo/config 中的 rustflags 被忽略?【英文标题】:Why does defining RUSTFLAGS cause rustflags in .cargo/config to be ignored?为什么定义 RUSTFLAGS 会导致 .cargo/config 中的 rustflags 被忽略? 【发布时间】:2022-01-18 11:08:10 【问题描述】:我有这个作为我的 ./cargo/config:
[target.aarch64-unknown-linux-gnu]
linker = "aarch64-none-linux-gnu-gcc"
rustflags = ["-C", "target-feature=+crt-static"]
我在 build.sh 中定义了 RUSTFLAGS,如下所示:
export RUSTFLAGS='--cfg chip_type="es"'
当我这样做时:
cargo build --target=aarch64-unknown-linux-gnu
我发现"-C", "target-feature=+crt-static"
不包括在内。我该如何解决这个问题?
【问题讨论】:
【参考方案1】:从Cargo Configuration上的build.rustflags
可以看出:
有三个相互排斥的额外标志来源。它们按顺序检查,使用第一个:
RUSTFLAGS
环境变量。所有匹配的
target.<triple>.rustflags
和target.<cfg>.rustflags
配置条目连接在一起。
build.rustflags
配置值。
所以这个新的build.sh
代码解决了我的问题:
RUSTFLAGS='--cfg chip_type="es" '$RUSTFLAGS
RUSTFLAGS='-C target-feature=+crt-static '$RUSTFLAGS
export RUSTFLAGS
【讨论】:
以上是关于为啥定义 RUSTFLAGS 会导致 .cargo/config 中的 rustflags 被忽略?的主要内容,如果未能解决你的问题,请参考以下文章
当我拥有最新的 rustc 和 cargo 版本时,为啥我会收到解析器功能的构建错误?
为啥动画自定义 CALayer 属性会导致其他属性在动画期间为零?
为啥自定义 QGraphicsItem 会导致场景或视图移动,除非 boundingRect 为空?