【发布时间】: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