You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Cargo生成的target/*/deps目录下带哈希后缀的准确文件名

方案1:使用Cargo JSON输出(官方推荐,最稳定)

Cargo支持输出编译过程的结构化JSON消息,你可以直接解析该输出获取准确的生成文件路径,不受哈希变化、Cargo版本更新的影响。

执行命令时添加--message-format=json参数:

cargo rustc --release -- --emit=llvm-ir --message-format=json

输出中reason为compiler-artifact的条目下,filenames字段会包含本次编译生成的所有文件的完整绝对路径,你可以用jq等工具过滤出你需要的.ll文件。

在Makefile中示例用法:

# 单个包的.ll文件获取示例
CHIP8_ENGINE_LL := $(shell cargo rustc --release --package chip8_engine -- --emit=llvm-ir --message-format=json \
  | jq -r 'select(.reason == "compiler-artifact") | .filenames[] | select(endswith(".ll"))')

# 后续可以直接使用变量
echo $(CHIP8_ENGINE_LL)
方案2:通配符匹配(适合简单场景)

如果不想引入JSON解析依赖,可以直接通过固定前缀的通配符匹配目标文件,建议同时按修改时间排序取最新文件,避免匹配到历史编译残留的旧文件:

# 获取chip8_engine最新生成的.ll文件
find target/release/deps -name "chip8_engine-*.ll" -printf "%T@ %p\n" | sort -n | tail -n 1 | cut -d' ' -f2-

在Makefile中示例用法:

CHIP8_C64_LL := $(shell find target/release/deps -name "chip8_c64-*.ll" -printf "%T@ %p\n" | sort -n | tail -n 1 | cut -d' ' -f2-)

注意:使用该方案前如果要保证完全准确,可以先执行cargo clean清理历史构建产物,避免多版本文件残留。

内容的提问来源于stack exchange,提问作者Cactus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 12:45:02