【问题标题】:Testing a Rust crate outside of the source package在源代码包之外测试 Rust crate
【发布时间】:2016-06-05 00:14:02
【问题描述】:

我已经创建了我的 Rust crate。这是一件非常琐碎的事情。它构建得很好,并且在它自己的源目录中测试时工作得很好(我只是在我的测试文件中包含了extern crate my_first_crate;)。

我现在想在完全不同的应用程序中测试 crate。

如果我将相同的 extern crate 行添加到我的新应用程序中,编译器会告诉我它找不到 crate。我预料到了这一点(如果我告诉编译器链接到它不知道的库,我会在 C 中得到相同的结果!)

我需要将 my_first_crate.rlib 文件从源文件复制到应用程序的目标/调试文件夹,还是有办法告诉 cargo 它需要链接到 rlib 文件?

【问题讨论】:

    标签: rust


    【解决方案1】:

    您需要将 crate 添加为应用程序的依赖项。将此添加到您的应用程序的Cargo.toml

    [dependencies]
    my_first_crate = { path = "/path/to/crate" }
    

    "/path/to/crate" 是 crate 源的根路径(即包含其 Cargo.toml 的目录)。您可以使用相对路径或绝对路径(但如果您打算发布代码,请避免使用绝对路径!)。

    【讨论】:

    • 谢谢。我添加了 my_first_crate = {path = "."} 并将 libmy_first_crate.rlib 放在项目的根目录中(Cargo.toml 所在的位置)。当我运行 cargo 时,我被告知“找不到名为 my_first_crate 的匹配包”。有什么想法吗?
    • 如果我使用 rustc -L 。 src/main.rs,二进制文件被创建并可以执行。部分成功,只是想不通为什么货物不带图书馆
    • Cargo 通过为每个项目单独重新编译依赖项来工作(因为每个项目可能对同一个 crate 使用不同的功能集)。它不是为重用预编译的 crate 而设计的。
    猜你喜欢
    • 1970-01-01
    • 2022-01-15
    • 2021-10-27
    • 1970-01-01
    • 2016-09-17
    • 2015-01-17
    • 2021-11-17
    • 2021-05-15
    • 1970-01-01
    相关资源
    最近更新 更多