build pkg-config

A library to run the pkg-config system tool at build time in order to be used in Cargo build scripts

32 releases

Uses old Rust 2015

0.3.19 Oct 13, 2020
0.3.18 Jul 11, 2020
0.3.17 Nov 2, 2019
0.3.15 Jul 25, 2019
0.1.0 Nov 27, 2014

#3 in Build Utils

Download history 223381/week @ 2020-09-30 233910/week @ 2020-10-07 250148/week @ 2020-10-14 246623/week @ 2020-10-21 249309/week @ 2020-10-28 231579/week @ 2020-11-04 230044/week @ 2020-11-11 243053/week @ 2020-11-18 210689/week @ 2020-11-25 238205/week @ 2020-12-02 228890/week @ 2020-12-09 215832/week @ 2020-12-16 159371/week @ 2020-12-23 190002/week @ 2020-12-30 252213/week @ 2021-01-06 220792/week @ 2021-01-13

864,096 downloads per month
Used in 6,686 crates (444 directly)


521 lines


Build Status Rust


A simple library meant to be used as a build dependency with Cargo packages in order to use the system pkg-config tool (if available) to determine where a library is located.

You can use this crate directly to probe for specific libraries, or use metadeps to declare all your pkg-config dependencies in Cargo.toml.

This library requires Rust 1.30+.


Find the system library named foo, with minimum version 1.2.3:

extern crate pkg_config;

fn main() {

Find the system library named foo, with no version requirement (not recommended):

extern crate pkg_config;

fn main() {

External configuration via target-scoped environment variables

In cross-compilation context, it is useful to manage separately PKG_CONFIG_PATH and a few other variables for the host and the target platform.


Each of these variables can also be supplied with certain prefixes and suffixes, in the following prioritized order:

  1. <var>_<target> - for example, PKG_CONFIG_PATH_x86_64-unknown-linux-gnu
  2. <var>_<target_with_underscores> - for example, PKG_CONFIG_PATH_x86_64_unknown_linux_gnu
  3. <build-kind>_<var> - for example, HOST_PKG_CONFIG_PATH or TARGET_PKG_CONFIG_PATH
  4. <var> - a plain PKG_CONFIG_PATH

This crate will allow pkg-config to be used in cross-compilation if PKG_CONFIG_SYSROOT_DIR or PKG_CONFIG is set. You can set PKG_CONFIG_ALLOW_CROSS=1 to bypass the compatibility check, but please note that enabling use of pkg-config in cross-compilation without appropriate sysroot and search paths set is likely to break builds.

Some Rust sys crates support building vendored libraries from source, which may be a work around for lack of cross-compilation support in pkg-config.


This project is licensed under either of

at your option.


Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in pkg-config-rs by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

No runtime deps