我想为我的一个 rust 项目设置一个工具链覆盖,以使用 GNU 工具链而不是默认的 MSVC 工具链。但不知何故,其中的配置rust-toolchain.toml
被忽略了。(我是最新的,这不是因为扩展。)
这是怎么回事:
λ rustup show
Default host: x86_64-pc-windows-msvc
rustup home: C:\Users\<username>\scoop\persist\rustup\.rustup
installed toolchains
--------------------
stable-x86_64-pc-windows-gnu
stable-x86_64-pc-windows-msvc (default)
installed targets for active toolchain
--------------------------------------
x86_64-pc-windows-gnu
x86_64-pc-windows-msvc
active toolchain
----------------
stable-x86_64-pc-windows-msvc (default)
rustc 1.57.0 (f1edd0429 2021-11-29)
如您所见,我安装了 GNU 工具链。
所以我创建了以下rust-toolchain.toml
文件:
λ cat rust-toolchain.toml
[toolchain]
channel = "stable"
targets = ["x86_64-pc-windows-gnu"]
现在,当我运行时,rustup show
我得到一个结果,显示该工具正在查看该文件,但它似乎没有正确处理它,因为它仍然想使用 msvc。
λ rustup show
Default host: x86_64-pc-windows-msvc
rustup home: C:\Users\<username>\scoop\persist\rustup\.rustup
installed toolchains
--------------------
stable-x86_64-pc-windows-gnu
stable-x86_64-pc-windows-msvc (default)
installed targets for active toolchain
--------------------------------------
x86_64-pc-windows-gnu
x86_64-pc-windows-msvc
active toolchain
----------------
stable-x86_64-pc-windows-msvc (overridden by 'C:\<project path>\rust-toolchain.toml')
rustc 1.57.0 (f1edd0429 2021-11-29)
我的猜测是,出于某种原因,x86_64-pc-windows-gnu
它被认为是工具链的有效目标stable-x86_64-pc-windows-msvc
,但我不明白为什么、如何防止它,或者如何在rust-toolchain.toml
我想使用工具链x86_64-pc-windows-gnu
目标而不是工具链目标的文件中写入stable-x86_64-pc-windows-gnu
的stable-x86_64-pc-windows-msvc
工具链。
你觉得我怎么能解决这个问题?
注意:使用rustup default stable-gnu
按预期工作,但我希望能够在存储库中提交一些东西,以便其他贡献者(和他们的工具)知道他们需要使用这个特定的工具链。
编辑:以防万一。
λ rustup -V
rustup 1.24.3 (ce5817a94 2021-05-31)