【问题标题】:How do I specify that Cargo should build binaries only on a certain target?如何指定 Cargo 仅在特定目标上构建二进制文件?
【发布时间】:2022-01-22 14:43:15
【问题描述】:

我有一个带有库和二进制文件的 Cargo 项目。该库旨在用于许多平台,包括 Android,而二进制文件仅用于 Linux。因此,二进制文件包含一堆在我以 Android 为目标时无法编译的特定于 Linux 的代码。有没有办法指定(不使用特性)二进制文件只能在 Linux 上编译?

我尝试将#![cfg(target_os = "linux")] 放入我的二进制文件的main.rs 中,但随后出现此错误:

error[E0601]: `main` function not found in crate `server`
  --> src/bin/server/main.rs:1:1
   |
1  | / #![cfg(target_os = "linux")]
2  | |
3  | | use anyhow::{self, Context};
4  | | 
...  |
36 | |     }
37 | | }
   | |_^ consider adding a `main` function to `src/bin/server/main.rs`

【问题讨论】:

  • 请参考以下链接中的编译选项部分:doc.rust-lang.org/cargo/commands/cargo-build.html> 请检查是否有帮助
  • 我们可以在 cargo config 的 [[bin]] 块内设置 build.target 吗?但如果您使用 --target,它会被覆盖。你的配置现在是什么样子的?
  • 使二进制文件成为需要库的子箱?这可能有效,但看起来确实像一个黑客。祝你好运!
  • 你做对了它只是抱怨在你的主 rust 文件中没有邮件功能。如果没有 main 函数,你希望二进制文件如何工作?

标签: rust rust-cargo


【解决方案1】:

以下链接有相关信息,在目标选择和选择性编译方面应该对您有所帮助https://doc.rust-lang.org/cargo/commands/cargo-build.html#target-selection

【讨论】:

    猜你喜欢
    • 2016-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-10
    • 1970-01-01
    • 2012-11-01
    相关资源
    最近更新 更多