本文档提供了从源代码构建ripgrep的全面指南。它涵盖了先决条件、构建过程、配置选项以及特定于平台的注意事项。有关安装预编译二进制文件的信息,请参阅安装。
在从源代码构建ripgrep之前,您需要在系统上安装以下工具和依赖项
Ripgrep是用Rust编写的,因此您需要安装Rust及其包管理器Cargo。最低支持的Rust版本为1.72,如Cargo.toml中指定。
要安装Rust和Cargo,请使用rustup或您的操作系统包管理器。
PCRE2:对于可选的PCRE2支持,您需要PCRE2库及其开发文件。
在Debian/Ubuntu上
在macOS上使用Homebrew
来源:Cargo.toml71
首先,从GitHub克隆ripgrep存储库
标准的调试构建
发布构建
编译后的二进制文件将位于target/release/rg。
使用PCRE2支持构建
Ripgrep的构建系统通过不同的构建配置和功能提供多种配置选项。
来源:build.rs1-46
Ripgrep在其Cargo.toml文件中定义了多个构建配置
| 配置文件 | 目的 | 关键设置 |
|---|---|---|
| release | 标准优化构建 | debug = 1(包含行表) |
| release-lto | 高度优化构建 | 完整的LTO、剥离符号、单个代码生成单元 |
| deb | 用于Debian打包 | 禁用调试信息 |
release-lto配置概要文件对于创建更小、更快的二进制文件特别有用,但会以更长的构建时间为代价。
Ripgrep组织为一个Cargo工作区,包含多个crate
cross工具支持跨平台编译,适用于各种目标。来源:Cargo.toml62-64 ci/utils.sh100-107
构建脚本为Windows MSVC构建配置了特殊选项
来源:build.rs6-32
您可以使用cross工具来交叉编译ripgrep
CI实用程序包含用于确定适当的编译目标和特定于架构的设置的助手。
来源:ci/utils.sh30-56 ci/utils.sh100-107
release-lto配置概要文件提供了高度优化构建配置的示例
这使用了链接时优化(LTO),剥离符号,并针对大小和速度进行了优化,但会牺牲编译时间。
Ripgrep包含使用cargo-deb构建Debian软件包的元数据
这将构建一个带有适当文件、权限和元数据的.deb软件包。
构建后,您可以运行测试以确保一切正常
特别是对于集成测试
构建后,您可以验证二进制文件是否正常工作
输出将包括版本号,如果从git存储库构建,还将包括构建使用的git提交的短哈希(由build.rs设置)。