如何在其他项目中使用板条箱以免再次编译?

时间:2018-07-01 08:55:45

标签: rust

我想在hello_project中使用我的hellow_crate,以便不会重新编译该板条箱。

这是我的箱子结构:

hellow_crate
|__src
|  |__lib.rs
|__Cargo.lock
|__Cargo.toml

这是我的箱子的Cargo.toml文件:

[package]
name = "hellow_new"
version = "0.1.0"
authors = ["John <john@123gmail.com>"]
[dependencies]

这是我的项目结构:

hello_project
|  |__main.rs
|__Cargo.lock
|__Cargo.toml

这是我项目的Cargo.toml文件:

[package]
name = "hello_project"
version = "0.1.0"
authors = ["John <john@123gmail.com>"]
[dependencies]

1 个答案:

答案 0 :(得分:2)

这里有两种可能的解决方案。

将一个依赖项作为相对路径添加到您的板条箱:

假设项目结构如下:

DicRoot Json = JsonConvert.DeserializeObject<DicRoot>(File.ReadAllText(@"c:\users\banu_\source\repos\TestJsonLib\TestJsonLib\Json\ErrorMSG.json"));
foreach (var f in Json.Errors)
{
    Console.WriteLine("Nume={0} Mesaj={1} Description={2}",f.Key, f.Value.MSG, f.Value.Description);
}

然后,您可以更改hellow_project的Cargo.toml文件,使其看起来像这样:

project
|__hellow_crate
|__hello_project

使用工作区:

如果 hellow_crate 仅由 hello_project 使用,并且不会用作其他独立项目的依赖项,则将其包含在工作空间中是有意义的。

在这种情况下,目录结构变为以下内容:

[package]
name = "hello_project"
version = "0.1.0"
authors = ["John <john@123gmail.com>"]
[dependencies]
hellow_crate = { path = "../hellow_crate" }

并更改hello_project的Cargo.toml文件,如下所示:

hello_project
|__hellow_crate
|  |__src
|  |  |__lib.rs
|  |__Cargo.toml
|  |__Cargo.lock
|__src
|  |__main.rs
|__Cargo.lock
|__Cargo.toml

这具有使货物在单个目标目录中编译所有代码的优势,并允许您使用[package] name = "hello_project" version = "0.1.0" authors = ["John <john@123gmail.com>"] [workspace] members = [ "hellow_crate" ] [dependencies] hellow_crate = { path = "hellow_crate" } 运行项目和板条箱的所有测试。