问题描述
我想使用位于我的主目录中的本地包。默认情况下,Cargo 搜索与 Cargo.toml 相关的依赖项。如果我知道我的项目相对于主文件夹的位置,我可以执行以下操作:
[dependencies]
tools = { path = "../../rust_libs/tools" }
我并不总是知道我的项目在哪里,我想做这样的事情:
[dependencies]
tools = { path = "${HOME}/rust_libs/tools" }
如何在 Cargo.toml 中获取主路径?也许还有其他方法可以实现这一目标?
解决方法
如果您使用以“/”开头的路径,它应该可以工作,该路径应该被识别为绝对路径。如果路径以 ~/ 或 $HOME/ 开头并且没有 env 变量扩展,那么这些路径将看起来像一个相对路径,并且货物将在当前路径之前。我认为 Cargo.toml 不支持替换环境变量,因此您必须指定整个路径(即 /Users/vladas/rust_libs/tools
)
您可以尝试使用本机 linux 软链接来解决此问题:
- 使用逗号在您的
~/rust_libs/tools
目录中创建指向Cargo.toml
的软链接:
ln -s ~/rust_libs/tools
- 在
Cargo.toml
中只使用相对路径:
[dependencies]
tools = { path = "tools" }