Bazel构建Rust项目实战:深入理解`rules_rust`

Bazel构建Rust项目实战:深入理解rules_rust

rules_rustRust rules for Bazel项目地址:https://gitcode.com/gh_mirrors/ru/rules_rust

1. 项目目录结构及介绍

rules_rust是Bazel用于构建Rust项目的规则集合,其GitHub仓库在https://github.com/bazelbuild/rules_rust。此开源项目通过一系列精心设计的Bazel规则,简化了Rust代码的构建和测试过程。

核心目录与文件概览:

  • WORKSPACE: 这个文件是Bazel的工作区定义文件,包含了指向rules_rust依赖的版本声明以及其它必要的外部依赖。
  • BUILD.bazelBUILD: 在库或二进制的不同部分,这些文件定义了如何构建和测试Rust代码。
  • docs: 包含项目文档,如规则使用的详细说明。
  • examples: 提供多个示例,展示如何使用这些规则来构建不同的Rust项目。
  • src: 若项目内部有源码示例或工具代码,通常放置于此处,但在rules_rust本身,核心逻辑多在.bzl文件中实现。
  • .bzl文件(例如 repositories.bzl, rust.bzl: 定义了Bazel的所有规则,包括下载依赖、注册Rust编译器等核心功能。

2. 项目启动文件介绍

rules_rust中,并没有一个典型的“启动文件”像传统应用那样直接运行。然而,重要的是理解如何初始化一个支持rules_rust的新项目或如何在现有项目中集成它。这通常涉及以下几个步骤:

  • 初始化或添加到现有Bazel工作区:

    • 使用WORKSPACE文件中的http_archive规则引入rules_rust作为外部依赖。
    • 调用rules_rust_dependencies()rust_register_toolchains()函数以设置好依赖和工具链。
  • 编写首个Bazel构建文件:

    • 对于Rust库或二进制程序,您会在相应的目录下创建或修改BUILD.bazel文件,使用rust_libraryrust_binary规则来指定源代码和依赖关系。

例如,一个简单的启动过程可能涉及编辑BUILD.bazel以包含以下内容:

load("@rules_rust//rust:defs.bzl", "rust_library")

rust_library(
    name = "hello_lib",
    srcs = ["lib.rs"],
)

3. 项目的配置文件介绍

.bazelrcWORKSPACE 文件

  • .bazelrc: 这不是一个强制性的配置文件,但常被用来设定Bazel的默认行为,比如构建选项或远程缓存的配置。它允许用户自定义Bazel的执行策略。

  • WORKSPACE 文件: 如前所述,这是定义所有外部依赖的地方,对于rules_rust来说,关键是在这里引入rules_rust及其对应的版本。示例如下:

http_archive(
    name = "rules_rust",
    urls = ["https://github.com/bazelbuild/rules_rust/releases/download/0.48.0/rules_rust-v0.48.0.tar.gz"],
    sha256 = "Weev1uz2QztBlDA88JX6A1N72SucD1V8lBsaliM0TTg=",
)

load("@rules_rust//rust:repositories.bzl", "rules_rust_dependencies", "rust_register_toolchains")
rules_rust_dependencies()
rust_register_toolchains()

通过这样的配置,开发者能够顺利地利用rules_rust进行Rust项目的开发和管理,确保高效的构建与测试流程。

rules_rustRust rules for Bazel项目地址:https://gitcode.com/gh_mirrors/ru/rules_rust

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凌桃莺Talia

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值