如何在 Cargo.toml 中指定位于我的主目录中的依赖项的路径?
How to specify the path to a dependency located in my home directory in Cargo.toml?
我想使用位于我的主目录中的本地包。默认情况下,Cargo 搜索相对于 Cargo.toml 的依赖项。如果我知道我的项目相对于主文件夹的位置,我可以这样做:
[dependencies]
tools = { path = "../../rust_libs/tools" }
我并不总是知道我的项目在哪里,我想做这样的事情:
[dependencies]
tools = { path = "${HOME}/rust_libs/tools" }
如何获取 Cargo.toml 内的主路径?也许还有其他方法可以做到这一点?
如果您使用以“/”开头的路径应该会起作用,这应该被识别为绝对路径。如果路径以 ~/ 或 $HOME/ 开头并且没有 env 变量扩展,那么这些路径将看起来像相对路径,并且 cargo 将添加当前路径。我认为 Cargo.toml 不支持替换环境变量,因此您必须指定整个路径(即 /Users/vladas/rust_libs/tools
)
您可以尝试使用本机 linux soft links 解决此问题:
- 使用命令在您的
Cargo.toml
目录中创建软 link 到 ~/rust_libs/tools
:
ln -s ~/rust_libs/tools
- 在
Cargo.toml
中只使用相对路径:
[dependencies]
tools = { path = "tools" }
我想使用位于我的主目录中的本地包。默认情况下,Cargo 搜索相对于 Cargo.toml 的依赖项。如果我知道我的项目相对于主文件夹的位置,我可以这样做:
[dependencies]
tools = { path = "../../rust_libs/tools" }
我并不总是知道我的项目在哪里,我想做这样的事情:
[dependencies]
tools = { path = "${HOME}/rust_libs/tools" }
如何获取 Cargo.toml 内的主路径?也许还有其他方法可以做到这一点?
如果您使用以“/”开头的路径应该会起作用,这应该被识别为绝对路径。如果路径以 ~/ 或 $HOME/ 开头并且没有 env 变量扩展,那么这些路径将看起来像相对路径,并且 cargo 将添加当前路径。我认为 Cargo.toml 不支持替换环境变量,因此您必须指定整个路径(即 /Users/vladas/rust_libs/tools
)
您可以尝试使用本机 linux soft links 解决此问题:
- 使用命令在您的
Cargo.toml
目录中创建软 link 到~/rust_libs/tools
:
ln -s ~/rust_libs/tools
- 在
Cargo.toml
中只使用相对路径:
[dependencies]
tools = { path = "tools" }