代码之家  ›  专栏  ›  技术社区  ›  laptou

如何指定Cargo应仅在特定目标上构建二进制文件?

  •  1
  • laptou  · 技术社区  · 3 年前

    我有一个Cargo项目,它有一个库和一个二进制文件。该库旨在用于包括Android在内的许多平台,而二进制文件仅用于Linux。因此,二进制文件包含一堆特定于Linux的代码,当我以Android为目标时,这些代码不会编译。有没有办法指定(不使用功能)二进制文件只能在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`
    
    0 回复  |  直到 3 年前
        1
  •  -1
  •   Karthik Balaguru    2 年前

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