【问题标题】:How to compile to both wasm and binary in a Rust crate?如何在 Rust crate 中同时编译为 wasm 和二进制?
【发布时间】:2021-11-21 05:59:07
【问题描述】:

我正在为 Web 应用程序编写后端,并希望为客户端重用一些逻辑。我想使用 wasm 生成一个 Javascript 可以使用的库。假设逻辑在 lib.rs 中。我该怎么办,这样:

  1. 后端可以正常导入和使用 lib.rs 中的代码,cargo build 也会按预期生成二进制文件。
  2. Rust 为 lib.rs 生成一个 wasm 库

我尝试将这些添加到我的货物文件中(通过以下方式:Rust package with both a library and a binary?):

[lib]
crate-type = ["cdylib", "rlib"]

[[bin]]
name = "mybin"
path = "src/main.rs"

但似乎 cargo 正在为浏览器构建我的二进制文件,因此它缺少所有 sys crate。

【问题讨论】:

    标签: rust webassembly


    【解决方案1】:

    您可以使用--lib 选项仅要求构建您的库。

    cargo build --lib --target wasm32-unknown-unknown
    

    【讨论】:

    • 谢谢。有没有办法在 toml 文件中为 bin 和 lib 指定不同的编译目标,以便cargo build 将两者都构建?
    • @Gnut 我不知道——一个cargo build 命令只会为一个目标构建。
    【解决方案2】:

    所以我目前的方法是为 lib.rs 创建一个单独的包并将其用作后端的依赖项,如下所述: What is an idiomatic way to have shared utility functions for integration tests and benchmarks? 它似乎工作得很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-05
      • 2021-10-27
      • 2020-07-13
      • 2016-10-28
      • 1970-01-01
      • 2022-11-01
      相关资源
      最近更新 更多