Rustc的命令行参数
英文原文地址: https://doc.rust-lang.org/rustc/command-line-arguments.html
这是 rustc 的命令行参数列表和他们的功能介绍:
-h/--help: 帮助
该标志将打印出rustc的帮助信息。
--cfg:配置编译环境
此标志可以打开或关闭各种#[cfg]设置。
该值可以是单个标识符,也可以是由=分隔两个标识符。
举例,--cfg 'verbose' 或者 --cfg 'feature="serde"'。分别对应#[cfg(verbose)]和#[cfg(feature = "serde")]。
-L:将目录添加到库搜索路径
查找外部crate或库时,将搜索传递到此标志的目录。
搜索路径的类型可以通过 -L KIND=PATH 方式制定,这是可选的,其中KIND可以是以下之一:
dependency—仅在此目录中搜索传递依赖项。crate—仅在此目录中搜索此crate的直接依赖项。native—仅在此目录中搜索原生类库。framework—仅在此目录中搜索macOS框架。all—在此目录中搜索所有库类型。这是KIND未指定时的默认值。
-l:将生成的包链接到一个原生库
使用此标志可以在构建crate时指定链接到特定的原生库。
可以使用以下形式之一指定库的类型,-l KIND=lib 其中KIND可以是:
类库的类型可以通过 -l KIND=lib 方式制定,这是可选的,其中KIND可以是以下之一:
dylib— 原生动态库。static— 原生静态库(例如.a 包)。framework— macOS框架。
可以在 #[link] 属性中指定库的类型。如果未在 link 属性或命令行中指定种类,它将链接动态库(如果可用),否则将使用静态库。如果在命令行上指定了种类,它将覆盖link属性中指定的种类。
在link属性中使用的 name 可以用 “-l ATTR_NAME:LINK_NAME” 的形式来覆盖,其中 ATTR_NAME 是在 link属性的 name ,而 LINK_NAME 是将被链接的实际库的名称。
--crate-type:编译器生成包的类型列表
指示rustc要构建的crate类型。该标志接受逗号分隔的值列表,并且可以多次指定。有效的crate类型为:
lib—生成编译器首选的库类型,当前默认为rlib。rlib— Rust静态库。staticlib—原生静态库。dylib— Rust动态库。cdylib—原生动态库。bin—可运行的可执行程序。proc-macro—生成适合于程序宏类库的格式,该格式可由编译器加载。
crate类型可以使用 crate_type 属性指定。该 --crate-type 命令行值将覆盖 crate_type 属性。
可以在参考文档的 linkage 章节 中找到更多详细信息。
--crate-name:指定构建的crate的名称
告诉rustc crate的名称。
--edition:指定要使用的版本
此标志的值为 2015 或 2018。默认值为2015。有关版本的更多信息,请参见 版本指南。
--emit:指定要生成的输出文件的类型
该标志控制编译器生成的输出文件的类型。接受逗号分隔的值列表,并且可以多次指定。有效的生成种类有:
asm—生成带有crate的汇编代码的文件。默认输出文件名是CRATE_NAME.s。dep-info—生成具有Makefile语法的文件,该文件指示已经加载用来生成crate的所有源文件。默认输出文件名是CRATE_NAME.d。link—生成由--crate-type指定的crate。默认输出文件名取决于crate类型和平台。这是--emit未指定时的默认值。llvm-bc—生成包含LLVM 字节码的二进制文件。默认输出文件名是CRATE_NAME.bc。llvm-ir—生成包含LLVM IR的文件。默认输出文件名是CRATE_NAME.ll。metadata—生成包含有关crate元数据的文件。默认输出文件名是CRATE_NAME.rmeta。mir—生成包含rustc的中等中间表示形式(mid-level intermediate representation)的文件。默认输出文件名是CRATE_NAME.mir。obj—生成原生目标文件。默认输出文件名是CRATE_NAME.o。
可以使用 -o 标志设置输出的文件名。可以使用 -C extra-filename 标志添加后缀到文件名中。除非使用该 --out-dir 标志,否则文件将被写入当前目录。每种生成类型还可以使用KIND=PATH形式来指定输出的文件名,该文件名优先于-o标志。
--print:打印编译器信息
该标志输出有关编译器的各种信息。可以多次指定此标志,并按照指定标志的顺序打印信息。指定--print标志通常将禁用 --emit步骤,并且只会打印所请求的信息。有效的打印值类型为:
crate-name— crate的名称。file-names—由link生成种类创建的文件的名称。sysroot— sysroot的路径。cfg— CFG值列表。有关cfg值的更多信息,请参见条件编译。target-list—已知目标列表。可以使用--target标志选择目标 。target-cpus—当前目标的可用CPU值列表。可以使用该-C target-cpu=val标志选择目标CPU 。target-features—当前目标的可用目标功能列表。可以使用该-C target-feature=val标志启用目标功能。该标志是不安全的。有关更多详细信息,请参见已知问题。relocation-models—重定位模型列表。可以使用-C relocation-model=val标志选择重定位模型。code-models—代码模型列表。可以使用-C code-model=val标志选择代码模型 。tls-models—支持的线程本地存储(Thread Local Storage)模型列表。可以通过-Z tls-model=val标志选择模型。native-static-libs—在创建staticlibcrate类型时可以使用它。如果这是唯一标志,它将执行完整编译并包含诊断说明,该诊断说明指示在链接生成的静态库时要使用的链接器标志。该注释以文本开头,native-static-libs:以使其更容易获取输出。
-g:包括调试信息
-C debuginfo=2的同义词,更多信息请参见这里。
-O:优化代码
-C opt-level=2的同义词,更多信息请参见这里。
-o:输出的文件名
该标志控制输出文件名。
--out-dir:写入输出的目录
输出的crate将被写入此目录。如果-o标志被使用,则忽略此标志。
--explain:提供错误消息的详细说明
rustc的每个错误都带有错误代码;这将打印出给定错误的详细说明。
--test:建立测试工具
编译此crate时,rustc将忽略main函数,而是产生一个测试工具。
--target:选择要构建的目标三元组
这可以控制要生产的目标。
-W:设置lint warnings
此标志将设置应将哪些lint设置为 warn 级别 。
-A:设置lint allowed
此标志将设置应将哪些lint设置为 allow 级别 。
-D:设置lint denied
此标志将设置应将哪些lint设置为 deny 级别 。
-F:设置lint forbidden
此标志将设置应将哪些lint设置为 forbid 级别 。
-Z:设置不稳定的选项
此标志将允许您设置rustc的不稳定选项。为了设置多个选项,-Z标志可以多次使用。例如:rustc -Z verbose -Z time。使用-Z指定选项仅在nightly中可用。要查看所有可用选项,请运行:rustc -Z help。
--cap-lints:设置最严格的lint等级
此标志使您可以“限制”lint,有关更多信息,请参见此处。
-C/ --codegen:代码生成选项
此标志将允许您设置代码生成选项。
-V/ --version:打印版本
此标志将打印出rustc的版本。
-v/ --verbose:使用详细输出
与其他标志结合使用时,该标志将产生额外的输出。
--extern:指定外部库的位置
此标志允许您传递将链接到要构建的crate的外部crate的名称和位置。可以多次指定此标志。值的格式应为CRATENAME=PATH。
--sysroot:覆盖系统根目录
“ sysroot”是rustc寻找Rust发行版附带的crate的地方。该标志允许它被覆盖。
--error-format:控制错误的产生方式
该标志使您可以控制消息的格式。消息将打印到stderr。有效选项是:
human—可读的输出。这是默认值。json—结构化JSON输出。有关更多详细信息,请参见JSON章节。short—短的单行消息。
--color:配置输出的颜色
此标志使您可以控制输出的颜色设置。有效选项是:
auto—如果输出发送到tty,则使用颜色。这是默认值。always—始终使用颜色。never—切勿使输出着色。
--remap-path-prefix:在输出中重新映射源名称
在所有输出中重新映射源路径前缀,包括编译器诊断,调试信息,宏扩展等。它从FROM=TO形式中获取值, 其中路径前缀等于FROM的 value 被重写为 TO的 value。在FROM自身也可以包含一个=符号,但TO价值不得。可以多次指定此标志。
这对于标准化生成产品很有用,例如通过从发出到目标文件中的路径名中删除当前目录。替换纯文本形式,不考虑当前系统的路径名语法。例如--remap-path-prefix foo=bar将匹配foo/lib.rs但不匹配 ./foo/lib.rs。
--json:配置编译器打印的json消息
当--error-format=json选项传递给rustc时,所有编译器的诊断输出将以JSON blob的形式发出。该 --json参数可与一起使用,--error-format=json以配置JSON Blob包含的内容以及发出的JSON Blob。
使用--error-format=json编译器时,始终会以JSON blob的形式发出任何编译器错误,但是该--json标志还可以使用以下选项来自定义输出:
diagnostic-short-诊断消息的json blob应该使用“简短”呈现,而不是常规的“人为”呈现。这意味着的输出--error-format=short将嵌入到JSON诊断程序中,而不是默认的--error-format=human。diagnostic-rendered-ansi-默认情况下,其rendered字段中的JSON Blob 将包含诊断的纯文本呈现。该选项改为指示诊断程序应具有嵌入的ANSI颜色代码,该颜色代码打算用于rustc通常已经用于终端输出的方式来对消息进行着色。请注意,此选项可与板条箱有效地结合使用,例如fwdansi将Windows上的这些ANSI代码转换为控制台命令,或者strip-ansi-escapes如果您以后希望有选择地去除ansi颜色的话。artifacts-这指示rustc为每个发出的工件发出JSON Blob。工件与--emitCLI参数中的请求相对应,并且该工件在文件系统上可用时,将立即发出通知。
请注意,它是无效的结合--json论点与--color 论据,并且需要结合起来--json使用--error-format=json。
有关更多详细信息,请参见JSON章节。
@path:从路径加载命令行标志
如果@path在命令行上指定,则它将打开path并从中读取命令行选项。这些选项是每行一个。空行表示空选项。该文件可以使用Unix或Windows样式的行尾,并且必须编码为UTF-8。