Crate vcpkg[][src]

A build dependency for Cargo libraries to find libraries in a Vcpkg tree. From a Vcpkg package name this build helper will emit cargo metadata to link it and it's dependencies (excluding system libraries, which it cannot derive).

Note: You must set one of RUSTFLAGS=-Ctarget-feature=+crt-static or VCPKGRS_DYNAMIC=1 in your environment or the vcpkg-rs helper will not find any libraries. If VCPKGRS_DYNAMIC is set, cargo install will generate dynamically linked binaries, in which case you will have to arrange for dlls from your Vcpkg installation to be available in your path.

The simplest possible usage looks like this :-

vcpkg::find_package("libssh2").unwrap();

The cargo metadata that is emitted can be changed like this :-

vcpkg::Config::new()
    .emit_includes(true)
    .find_package("zlib").unwrap();

If the search was successful all appropriate Cargo metadata will be printed to stdout.

The decision to choose static variants of libraries is driven by adding RUSTFLAGS=-Ctarget-feature=+crt-static to the environment. This requires at least Rust 1.19.

A number of environment variables are available to globally configure which libraries are selected.

There is a companion crate vcpkg_cli that allows testing of environment and flag combinations.

C:\src> vcpkg_cli probe -l static mysqlclient
Found library mysqlclient
Include paths:
        C:\src\[..]\vcpkg\installed\x64-windows-static\include
Library paths:
        C:\src\[..]\vcpkg\installed\x64-windows-static\lib
Cargo metadata:
        cargo:rustc-link-search=native=C:\src\[..]\vcpkg\installed\x64-windows-static\lib
        cargo:rustc-link-lib=static=mysqlclient

Structs

Config
Library

Details of a package that was found

Enums

Error

Functions

find_package

Find the package package in a Vcpkg tree.