cargo-pkgconfig

Crates.iocargo-pkgconfig
lib.rscargo-pkgconfig
version0.1.4
sourcesrc
created_at2022-02-08 16:09:49.481607
updated_at2022-02-12 00:27:54.002121
descriptionpkg-config like interface for exposing crate metadata to primitive build systems
homepagehttps://github.com/microsoft/cargo-pkgconfig
repositoryhttps://github.com/microsoft/cargo-pkgconfig
max_upload_size
id529193
size19,738
Justin Moore (DrChat)

documentation

README

Cargo pkg-config tool

This tool extends Cargo with a pkg-config-like interface.

This allows you to extract metadata from Cargo crates like build artifacts in a manner that is synonymous with the native pkg-config.

For example, with 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

You can then use this output such as follows in a Makefile project:

# 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

Note that this is not to be confused with the pkg-config crate, which is intended to expose a programmatic interface to the native pkg-config for build.rs scripts.

Commit count: 16

cargo fmt