我有一个箱子,如果我运行
cargo rustc --release -- --emit=llvm-ir
,我会在target/release/deps
下得到以下文件:
target/release/deps/
├── chip8_c64-a95cc9a5a3e99697.d
├── chip8_c64-a95cc9a5a3e99697.ll
├── chip8_engine-2a1bf4bc9333b677.d
├── chip8_engine-2a1bf4bc9333b677.ll
├── libchip8_c64-a95cc9a5a3e99697.rlib
├── libchip8_c64-a95cc9a5a3e99697.rmeta
├── libchip8_engine-2a1bf4bc9333b677.rlib
└── libchip8_engine-2a1bf4bc9333b677.rmeta
当然,如果我更改内容,文件名中的哈希/指导也会更改。
我想在运行上述命令后从命令行/Makefile 中找出这些确切的文件名是什么。有没有办法从 Cargo 获取这些信息?
是的,如果您使用选项
cargo build
运行 -vv
,那么它将打印大量消息,其中包括 cargo
如何使用环境变量和命令行选项调用 rustc
。它的行为可能如下所示:
Running
`CARGO=/home/user/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/cargo CARGO_BIN_NAME=super
CARGO_CRATE_NAME=super CARGO_MANIFEST_DIR=/home/user/demo
CARGO_MANIFEST_PATH=/home/user/demo/Cargo.toml
CARGO_PKG_AUTHORS=''
CARGO_PKG_DESCRIPTION=''
CARGO_PKG_HOMEPAGE=''
CARGO_PKG_LICENSE=''
CARGO_PKG_LICENSE_FILE=''
CARGO_PKG_NAME=demo
CARGO_PKG_README=''
CARGO_PKG_REPOSITORY=''
CARGO_PKG_RUST_VERSION=''
CARGO_PKG_VERSION=0.1.0
CARGO_PKG_VERSION_MAJOR=0
CARGO_PKG_VERSION_MINOR=1
CARGO_PKG_VERSION_PATCH=0
CARGO_PKG_VERSION_PRE=''
CARGO_PRIMARY_PACKAGE=1 LD_LIBRARY_PATH='/home/user/demo/target/debug/deps:/home/user/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib'
/home/user/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/rustc
--crate-name super
--edition=2021
src/bin/super.rs
--error-format=json
--json=diagnostic-rendered-ansi,artifacts,future-incompat
--diagnostic-width=120
--crate-type bin
--emit=dep-info,link
-C embed-bitcode=no
-C debuginfo=2
--check-cfg 'cfg(docsrs)'
--check-cfg 'cfg(feature, values())'
-C metadata=cfed8a2a3cbb4725
-C extra-filename=-cfed8a2a3cbb4725
--out-dir
/home/user/demo/target/debug/deps
-C incremental=/home/user/demo/target/debug/incremental
-L dependency=/home/user/demo/target/debug/deps`
,还有一个选项
-C extra-filename=-cfed8a2a3cbb4725
指定了crate名称的最终目标的后缀名称。