gpt4 book ai didi

rust - 依赖于由 cargo 构建的另一个工作空间包的二进制文件

转载 作者:行者123 更新时间:2023-12-03 11:26:49 24 4
gpt4 key购买 nike

我有一个包含多个包的工作区项目。两个重要的是:

  • flowc - 这是一个库和一个二进制
  • flowstdlib
  • flowc是我作为项目的一部分构建的一种编译器。 flowstdlib有一个构建脚本,它使用 flowc构建二进制文件来构建那个包(生成“代码”、文件等),所以我需要 flowc编译器准备就绪时 flowstdlib将被 build 。
    cargo.tomlflowstdlib我定义 flowc作为构建依赖项:
    [build-dependencies]
    flowc = {path = "../flowc", version = "0.31.0" }`
    (我试过使它也成为一个依赖项,但没有改变)
    build.rsflowstdlib我在路径中寻找,如果没有在 ../target/debug/flowc中找到地点:
        let flowc = if Path::new(env!("CARGO_MANIFEST_DIR")).join("../target/debug/flowc").exists() {
    "../target/debug/flowc"
    } else if Simpath::new("PATH").find_type("flowc", FileType::File).is_ok() {
    "flowc"
    } else {
    ""
    };
    当我运行构建时,它看起来像是在尝试同时并行构建多个包:
       Compiling flowstdlib v0.31.0 (/Users/andrew/workspace/flow/flowstdlib)
    Compiling flowsamples v0.31.1 (/Users/andrew/workspace/flow/samples)
    warning: Could not find `flowc` in $PATH or `target/debug`, so cannot build flowstdlib
    error: failed to run custom build command for `flowsamples v0.31.1 (/Users/andrew/workspace/flow/samples)`
    flowstdlib构建失败为 flowc二进制尚未构建。
    由于构建继续并最终完成构建 flowc ,如果我重新运行构建,它将第二次工作(因为现在找到了 flowc 二进制文件)。
    所以:
  • 它看起来像一个 build-dependency确实等待构建依赖的二进制文件(也许它等待构建库,很难说)

  • 问题
    我如何构建 flowstdlib等待完成 flowc二进制?
    (不强制非并行构建)

    最佳答案

    在 RFC 登陆之前,我的解决方法是将构建拆分为两个命令(我目前正在使用 Makefile 来调用它们):

    * cargo build -p flowc   # will complete the build of the flowc binary
    * cargo build # will build the entire workspace, including flowstdlib

    关于rust - 依赖于由 cargo 构建的另一个工作空间包的二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65240040/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com