Crates.io | cargo-pkgconfig |
lib.rs | cargo-pkgconfig |
version | 0.1.4 |
source | src |
created_at | 2022-02-08 16:09:49.481607 |
updated_at | 2022-02-12 00:27:54.002121 |
description | pkg-config like interface for exposing crate metadata to primitive build systems |
homepage | https://github.com/microsoft/cargo-pkgconfig |
repository | https://github.com/microsoft/cargo-pkgconfig |
max_upload_size | |
id | 529193 |
size | 19,738 |
pkg-config
toolThis 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.