是否有办法链接不在当前包路径中的库。
此link建议将所有内容放在本地目录下。我们的包安装在其他地方的某个存储库中我只想在windows上指定它的libpath。
authors = ["Me"]
links = "CDbax"
[target.x86_64-pc-windows-gnu.CDbax]
rustc-link-lib = ["CDbax"]
rustc-link-search = ["Z:/Somepath//CPP/CDbax/x64/Debug/"]
root = "Z:/Somepath//CPP/CDbax/x64/Debug/"
但尝试货物构建-v给了我
package `hello v0.1.0 (file:///H:/Users/Mushfaque.Cradle/Documents/Rustc/hello)` specifies that it links to `CDbax` but does not have a custom build script
从货物build script support指南中,似乎表明这应该有效。但我可以看到它没有添加路径。然而,将lib移动到本地bin\x68_64-pc-windows-gnu\
路径可以正常工作。
更新 感谢下面的答案,我想我会更新这个,以便给出我的机器上可行的最终结果,以便其他人发现它有用。
在Cargo.toml中添加
links = "CDbax"
build = "build.rs"
即使没有build.rs文件,它似乎需要它(?)否则会抱怨
package `xxx v0.1.0` specifies that it links to `CDbax` but does not have a custom build script
随后Vaelden回答在.cargo中创建'配置'文件
如果这是一个子包,你不需要将links =标记放在父包中,即使它是一个dll;即使是'货运'。我假设它将dll路径添加到执行环境
答案 0 :(得分:6)
我认为问题在于您误将项目的清单误认为货物 构造
Cargo.toml
文件。它描述了您的项目本身。Cargo允许对特定项目进行本地配置 全局配置(如git)。货物也将这种能力扩展到了 分层策略。例如,如果调用货物 / home / foo / bar / baz,然后是以下配置文件 探究:
/home/foo/bar/baz/.cargo/config /home/foo/bar/.cargo/config /home/foo/.cargo/config /home/.cargo/config /.cargo/config
使用此结构,您可以指定每个项目的本地配置, 甚至可能将其检入版本控制。你也可以指定 个人默认使用主目录中的配置文件。
所以,如果你移动相关部分:
[target.x86_64-pc-windows-gnu.CDbax]
rustc-link-lib = ["CDbax"]
rustc-link-search = ["Z:/Somepath//CPP/CDbax/x64/Debug/"]
root = "Z:/Somepath//CPP/CDbax/x64/Debug/"
到货物配置文件的任何正确位置,它应该有效。