我正在生成一个由rust使用的带有mingw的dll。我知道我可以把libxxx.a
文件放在"Rustbinrustlibx86_64-pc-windows-gnulib"
目录下,这就是我现在所做的。但我宁愿把它保存在我的项目目录中。我要怎么让Cargo告诉rust去哪里找?
首先,您可以使用cargo rustc
直接将-L dir
参数传递给rustc:
cargo rustc -- -L lib
如果您的库位于lib
子目录。
另一个可能更方便的方法是使用构建脚本将库目录自动传递给rustc。然后,它也将与其他货物命令一起使用,如run
、test
等。如果将以下代码存储到build.rs
:
fn main() {
println!("cargo:rustc-link-lib=native=foo");
println!("cargo:rustc-link-search=native=lib");
}
(假设库名为libfoo.a
)
,然后将build
键添加到Cargo.toml:
[package]
部分[package]
...
build = "build.rs"
,那么它应该在每个构建命令时自动找到您的库。
请注意,构建脚本也是实际构建库的好地方。货物文档包含示例和链接。