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
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 :-
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.
VCPKG_ROOT- Set the directory to look in for a vcpkg installation. If it is not set, vcpkg will use the user-wide installation if one has been set up with
vcpkg integrate install
VCPKGRS_NO_FOO- if set, vcpkg-rs will not attempt to find the library named
VCPKGRS_DISABLE- if set, vcpkg-rs will not attempt to find any libraries.
VCPKGRS_DYNAMIC- if set, vcpkg-rs will link to DLL builds of ports.
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