为啥定义 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>.rustflagstarget.<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 为空?

为啥win10下安装Rust的RLS会出现问题?

为啥提供 key=index 会导致与不定义键不同的行为? [关闭]

为啥将自定义 WrappedRequest 与额外的类型参数和 ActionFilter 组合会导致类型丢失?