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 构建实用工具
157,358 每月下载量
用于200 个crate(直接使用35个)
33KB
484 行
为build.rs提供autotools/configure&make支持
编译使用autotools或兼容的configure
脚本 + make
的本地库的构建依赖项。
它基于cmake-rs,并且API试图尽可能地与之相似。
Autotools问题
通常捆绑在发布tar包中的生成的configure
脚本往往相当大,结构复杂,至少有一次已经成为传递恶意代码的载体(CVE-2024-3094)。
建议审查configure.ac
,并始终使用reconf
重新生成configure
。
交叉编译
Emscripten
对于像"was32-unknown-emscripten"这样的Emscripten目标,将configure
和make
调用作为参数传递给emconfigure
和emmake
,具体请参阅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