#构建依赖 #构建系统 #配置 #本地 #makefile #emscripten #项目

构建 autotools

构建本地库的依赖项,这些库使用configure&make风格的构建系统

13次发布

使用旧的Rust 2015

0.2.7 2024年4月8日
0.2.6 2023年2月20日
0.2.5 2022年2月27日
0.2.4 2021年12月13日
0.1.2 2018年3月11日

#18 in 构建实用工具

Download history 43661/week @ 2024-04-25 45450/week @ 2024-05-02 48153/week @ 2024-05-09 42031/week @ 2024-05-16 36873/week @ 2024-05-23 38061/week @ 2024-05-30 40537/week @ 2024-06-06 41602/week @ 2024-06-13 40860/week @ 2024-06-20 38451/week @ 2024-06-27 35287/week @ 2024-07-04 38261/week @ 2024-07-11 39829/week @ 2024-07-18 42366/week @ 2024-07-25 35646/week @ 2024-08-01 32047/week @ 2024-08-08

157,358 每月下载量
用于200 个crate(直接使用35个)

MIT 协议

33KB
484

为build.rs提供autotools/configure&make支持

LICENSE dependency status crates.io docs.rs Actions Status

编译使用autotools或兼容的configure脚本 + make的本地库的构建依赖项。

它基于cmake-rs,并且API试图尽可能地与之相似。

Autotools问题

通常捆绑在发布tar包中的生成的configure脚本往往相当大,结构复杂,至少有一次已经成为传递恶意代码的载体(CVE-2024-3094)。

建议审查configure.ac,并始终使用reconf重新生成configure

交叉编译

Emscripten

对于像"was32-unknown-emscripten"这样的Emscripten目标,将configuremake调用作为参数传递给emconfigureemmake,具体请参阅Emscripten文档

macOS上的自定义LLVM

确保将环境变量设置为CC=clang-{version},并且编译器在PATH中。如果您正在使用install-llvm-action,请确保设置env: true

其他编译器

请注意,我们依赖于 cc-rs 启发式算法来选择 C 和 C++ 编译器。有些可能存在于您的系统中,如果启发式算法失败,请确保设置 环境变量 来选择正确的编译器(例如,如果 musl-gcc 不存在,则 x86_64-linux-musl-gcc 可能存在)。

# Cargo.toml
[build-dependencies]
autotools = "0.2"
// build.rs
use autotools;

// Build the project in the path `foo` and installs it in `$OUT_DIR`
let dst = autotools::build("foo");

// Simply link the library without using pkg-config
println!("cargo:rustc-link-search=native={}", dst.display());
println!("cargo:rustc-link-lib=static=foo");
// build.rs
use autotools::Config;

let dst = Config::new("foo")
    .reconf("-ivf")
    .enable("feature", None)
    .with("dep", None)
    .disable("otherfeature", None)
    .without("otherdep", None)
    .cflag("-Wall")
    .build();

依赖项

~205KB