#cargo-build #pkg-config #build-system #interface #build-script #metadata #primitive

构建 cargo-pkgconfig

类似pkg-config的接口,用于将crate元数据暴露给原始构建系统

4个版本

0.1.4 2022年2月12日
0.1.3 2022年2月10日
0.1.2 2022年2月10日
0.1.1 2022年2月8日

541构建工具

MIT 许可证

10KB
159

Cargo pkg-config 工具

此工具扩展了Cargo,增加了类似pkg-config的接口。

这使得您可以从Cargo crate中提取元数据,类似于本机 pkg-config 的方式。

例如,使用 bindgen

> cargo pkgconfig --libs bindgen
    Finished dev [unoptimized + debuginfo] target(s) in 0.05s
/LIBPATH:D:/Dev/Repositories/rust-bindgen/target/debug libbindgen.rlib Bcrypt.lib Userenv.lib

然后您可以在Makefile项目中使用此输出,如下所示

# Declare the Rust crate to always be dirty and let Cargo handle rebuilds.
# It'd be nice to figure out a way to let Cargo tell make if the crate was rebuilt (to clean up stdout),
# but seemingly challenging to do so.
.PHONY: libsync.a
libsync.a:
	@RMCOMMAND@ libsync.a
	CRATELIBS=`@CARGO@ pkgconfig --libs sync -- --release --manifest-path $(srcdir)/sync/Cargo.toml`; \
	if [ $$? -ne 0 ]; then exit $$?; fi; \
	@MAKELIB@ $$CRATELIBS; \
	$(RANLIB) libsync.a

libcpu.a: $(OBJS) @OBJS64@ libsync.a
	@RMCOMMAND@ libcpu.a
	@MAKELIB@ $(OBJS) @OBJS64@ libsync.a
	$(RANLIB) libcpu.a

请注意,这不同于pkg-config crate,它旨在为build.rs脚本提供对本地 pkg-config 的程序性接口。

依赖关系

~2.3–3.5MB
~61K SLoC