如cargo check
所示,在不实际生成代码的情况下检查程序的格式是否良好通常很有用(这通常是一项非常耗时的任务)。我想用rustc
直接检查单个(库) Rust文件(我不能使用Cargo!)。
cargo check
显然是通过调用以下代码来工作的:
rustc --emit=metadata -Z no-codegen
这只会发出元数据,即一个.rmeta
文件。货物实际上需要根据检查过的板条箱来检查板条箱。在我的例子中,我真的不需要元数据文件。
我尝试了以下几种方法:
rustc --crate-type=lib --emit=
rustc --crate-type=lib --emit=nothing
但这两种方法都不起作用。我使用--crate-type=lib
是因为我的文件没有main
函数。我需要一个独立于平台的解决方案(我不仅想在我的机器上使用它,还想在一个公共脚本中使用它)。
如何让 rustc
不写入单个文件?
发布于 2018-07-24 04:05:47
您可以跳过--emit
标志。
最后的命令是:rustc -Z no-codegen rust.rs
发布于 2018-12-31 17:42:06
关于这个问题,引用my own GitHub comment的话,稳定生锈有几个选择:
rustc --emit=mir -o /dev/null
似乎可以在1.18和更高版本中工作,什么也不写。(--emit=mir
是唯一有用的--emit
选项-其他选项试图创建像/dev/null.foo0.rcgu.o
这样的愚蠢文件,除了没有checking.)rustc -C extra-filename=-tmp -C linker=true
的--emit=dep-info
(即使用/bin/true
作为“链接器”)似乎在所有版本中都有效,编写一些中间文件,但清除它们up.rustc --out-dir=<new empty temporary directory>
不那么聪明,因此可能不太可能崩溃?请注意,前两个选项不会发现链接器错误(也不会通过nightly-only -Zno-codegen
选项)。
https://stackoverflow.com/questions/51485765
复制相似问题