#cargo #wsl2 #wsl #cargo-subcommand #windows #cli

bin+lib wargo

cargo在WSL2的黄昏地带工作的邪恶孪生兄弟

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 2022年1月4日

#137 in Cargo插件

每月49次下载

MIT/Apache

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.0MIT许可证
除非您明确声明,否则根据Apache-2.0许可证的定义,您有意提交给此crate的任何贡献都将按上述方式双重许可,不附加任何额外条款或条件。

依赖关系

~7–16MB
~200K SLoC