当前位置: 首页 > article >正文

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

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

  • Rust 学习笔记:自定义构建和发布配置
    • 发布配置文件
    • 自定义 profile 的选项

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

发布配置文件

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

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

Cargo 有两个主要配置文件:

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

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

$ cargo buildFinished `dev` profile [unoptimized + debuginfo] target(s) in 0.00s
$ cargo build --releaseFinished `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

http://www.lryc.cn/news/2396294.html

相关文章:

  • StarRocks x Iceberg:云原生湖仓分析技术揭秘与最佳实践
  • 笔试笔记(运维)
  • JVM——云原生时代JVM的演进之路
  • 使用langchain实现五种分块策略:语义分块、父文档分块、递归分块、特殊格式、固定长度分块
  • 【项目记录】登录认证(下)
  • Debian上安装PostgreSQL的故障和排除
  • linux文件管理(补充)
  • Python训练营---Day42
  • 基于空天地一体化网络的通信系统matlab性能分析
  • c++ opencv 形态学操作腐蚀和膨胀
  • Axure组件即拖即用:横向拖动菜单(支持左右拖动选中交互)
  • Hadoop MapReduce:大数据处理利器
  • RabbitMQ-Go 性能分析
  • 【c++】【数据结构】红黑树
  • 基于SpringBoot+Redis实现RabbitMQ幂等性设计,解决MQ重复消费问题
  • React从基础入门到高级实战:React 生态与工具 - React 单元测试
  • 使用lighttpd和开发板进行交互
  • DRF的使用
  • 2024年09月 C/C++(四级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • 免费且好用的PDF水印添加工具
  • mqtt协议连接阿里云平台
  • 一文详谈Linux中的时间管理和定时器编程
  • Ubuntu 安装 Miniconda 及配置国内镜像源完整指南
  • 性能优化 - 理论篇:常见指标及切入点
  • 青少年编程与数学 02-020 C#程序设计基础 08课题、字符和字符串
  • 【论文阅读 | PR 2024 |ICAFusion:迭代交叉注意力引导的多光谱目标检测特征融合】
  • Spring Security加密模块深度解析
  • 华为OD机试真题——模拟消息队列(2025A卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
  • MySql(十三)
  • iOS —— UI 初探