5

我正在生成一个带有 mingw 的 dll,供 rust 使用。我知道我可以将我的libxxx.a文件放在"Rust\bin\rustlib\x86_64-pc-windows-gnu\lib"目录中,这就是我现在正在做的事情。但我宁愿将它保存在我的项目目录中。如何让 Cargo 告诉 rustc 在哪里可以找到它?

4

1 回答 1

6

首先,您可以使用直接cargo rustc-L dir参数传递给 rustc:

cargo rustc -- -L lib

如果您的库位于lib子目录中。

另一种可能更方便的方法是使用构建脚本将库目录自动传递给 rustc。然后它将与其他货物命令一起使用,例如runtest等。如果您将以下代码存储到build.rs

fn main() {
    println!("cargo:rustc-link-lib=native=foo");
    println!("cargo:rustc-link-search=native=lib");
}

(假设你的图书馆被称为libfoo.a

然后将build密钥添加到[package]Cargo.toml 中的部分:

[package]
...
build = "build.rs"

那么它应该会在每个构建命令时自动找到您的库。

请注意,构建脚本也是实际构建库的好地方。Cargo 文档包含相关示例和链接。

于 2015-08-02T08:11:00.090 回答