6个版本
0.4.1 | 2024年1月1日 |
---|---|
0.4.0 | 2024年1月1日 |
0.3.0 | 2023年12月11日 |
0.2.2 | 2022年2月23日 |
0.1.3 |
|
#137 in Cargo插件
每月49次下载
21KB
385 行
cargo在WSL2的黄昏地带工作的邪恶孪生兄弟
动机
问题的主要点是以下内容
您同时使用Windows和WSL2。您的仓库位于NTFS分区上。因此,WSL2内的编译性能会受到影响,因为文件需要跨越虚拟机/文件系统边界。
关于如何加速Rust编译的更详细背景和理由,请参阅我的文章 如何加快Rust编译速度。
解决方案
一种方法是把文件复制到WSL中的一个基于Linux的文件系统(如ext4)的位置,然后从那里进行编译。可选地,您可能需要将生成的工件复制回原始位置。
wargo
就是以cargo为封装的这种做法
- 将项目复制到Linux位置
- 运行提供的cargo命令
- 将工件复制回来
目前它以非常简单和直接的方式执行此操作;工作空间应该可以正常工作,但大多数情况下我使用的是单个包项目。此外,对目标文件夹的调整可能不会完全正常工作,但通常默认设置对我来说已经足够。
还有一些可选的功能,但就我的个人用例而言,当前状态已经相当完整。
如果您认为缺少某个功能或需要调整,请随时提交拉取请求或问题报告。
用法
安装
cargo install wargo --locked
Wargo.toml(可选)
如果需要配置行为,请将基本的Wargo.toml
添加到您的项目中。Wargo包装器本身不接受任何CLI参数,因此配置文件是目前唯一的选项。
# Wargo.toml
# this is also the default
dest_base_dir = "~/tmp"
该文件可以是完全空的,但至少需要指定dest_base_dir
。请使用位于您的家目录(~
)或任何其他绝对路径,但请确保它不是NTFS文件系统。
有关完整且带注释的示例,请参阅此处。
运行它
# instead of `cargo` just replace it with `wargo`:
wargo check
wargo build
wargo build --release
wargo run
# alternatively also callable as a cargo subcommand `wsl`:
cargo wsl build
安全性
此crate使用#![forbid(unsafe_code)]
确保所有内容都在100%安全的Rust中实现。
许可证
在您的选择下,许可受Apache License, Version 2.0或MIT许可证。除非您明确声明,否则根据Apache-2.0许可证的定义,您有意提交给此crate的任何贡献都将按上述方式双重许可,不附加任何额外条款或条件。
依赖关系
~7–16MB
~200K SLoC