Rust 学习笔记:自定义构建和发布配置

Rust 学习笔记:自定义构建和发布配置

  • [Rust 学习笔记:自定义构建和发布配置](#Rust 学习笔记:自定义构建和发布配置)

Rust 学习笔记:自定义构建和发布配置

发布配置文件

在 Rust 中,发布配置文件是预定义的和可定制的概要文件,具有不同的配置,允许程序员对编译代码的各种选项有更多的控制。

每个配置文件都是独立的。

Cargo 有两个主要配置文件:

  • 开发配置文件(dev profile):运行 cargo build 时使用,适用于开发,默认优化调试体验
  • 发布配置文件(release profile):运行 cargo build --release 时使用,适用于发布,默认优化性能

在构建的输出中,你可能对这些配置文件名称很熟悉:

复制代码
$ cargo build
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.00s
$ cargo build --release
    Finished `release` profile [optimized] target(s) in 0.32s

自定义 profile 的选项

当没有显式地在项目的 Cargo.toml 文件中添加任何 profile. \* 部分时,Cargo 对应用的每个概要文件都有默认设置。

为想要自定义的任何概要文件添加 profile. \* 部分,可以覆盖默认设置的任何子集。

例如,以下是开发和发布配置文件的 opt 级别设置的默认值:

复制代码
[profile.dev]
opt-level = 0

[profile.release]
opt-level = 3

opt-level 设置控制 Rust 将应用于代码的优化数量,范围为 0 到 3。数字越大,将应用越多的优化会延长编译时间。

如果正在开发并经常编译代码,那么希望通过更少的优化来编译得更快,即使最终代码运行得更慢。因此 dev 的默认选项级别为 0。当准备发布代码时,最好花更多的时间进行编译。只在发布模式下编译一次,但将多次运行编译后的程序,因此发布模式以较长的编译时间换取运行速度更快的代码。这就是为什么发布概要文件的默认选择级别是 3。

可以通过在 Cargo.toml 中为其添加不同的值来覆盖默认设置。例如,如果我们想在开发概要文件中使用优化级别 1,我们可以将这两行添加到项目的 Cargo.toml 文件:

复制代码
[profile.dev]
opt-level = 1

这段代码覆盖了默认设置 0。现在,当我们运行 cargo build 时,Cargo 将使用 dev 配置文件的默认值以及我们自定义的选项级别。因为我们将 opt-level 设置为 1,所以 Cargo 将应用比默认值更多的优化,但不如发布版本中那么多。

Cargo 文档:https://doc.rust-lang.org/cargo/reference/profiles.html

相关推荐
TunerT_TQ4 小时前
Valhalla 静态工程审阅 #007|AgentENV 源码证据驱动评测【大厂开源基础设施特辑】
rust·开源·go·github·sandbox·分布式系统·ai基础设施
NutShell Wang5 小时前
Vite 8.1 深度拆解:Rolldown 统一打包器如何终结前端构建的「双引擎时代」
前端·rust·开源·vite·开发者工具·vibe coding
寒水馨5 小时前
macOS下载、安装uv-0.12.0(附安装包uv-aarch64-apple-darwin.tar.gz)
python·macos·rust·项目管理·包管理器·astral·pip替代
寒水馨7 小时前
macOS下载、安装ripgrep-15.2.0(附安装包ripgrep-15.2.0-aarch64-apple-darwin.tar.gz)
macos·正则表达式·rust·ripgrep·rg·命令行搜索·代码搜索
SomeB1oody21 小时前
【RustyML入门】1.0. 快速上手
开发语言·后端·机器学习·rust·教程
骊城英雄21 小时前
Rust从入门到精通-trait
人工智能·算法·rust
花褪残红青杏小1 天前
Rust图像处理第23节-图像加噪:给每个像素单独掷一次骰子
rust·webassembly·图形学
小杍随笔1 天前
2025年Rust GUI框架实战万字避坑指南
开发语言·后端·rust
在水一缸2 天前
当 AI 编码助手遇上 Rust:深入解析 Zerostack 的极简哲学与实战应用
rust·系统架构·开源项目·轻量化·ai编码助手·zerostack
2401_873479402 天前
风控引擎高并发IP查询方案对比:开源Rust库 vs 商业离线库,怎么选?
tcp/ip·rust·开源·ip