A build dependency for Cargo libraries to find libraries in a Vcpkg tree.
The simplest possible usage for a library whose Vcpkg port name matches the name of the lib and DLL that are being looked for looks like this :-
.unwrap;
probe_library
In practice the .lib and .dll often differ in name from the package itself, in which case the library names must be specified, like this :-
.lib_names
.probe.unwrap;
new
If the search was successful all appropriate Cargo metadata will be printed on stdout.
The decision to choose static variants of libraries is driven by the rustc
flag -C target-feature=crt-static
. This requires a nightly compiler but is
scheduled to be stable in rustc 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 withvcpkg integrate install
-
FOO_NO_VCPKG
- if set, vcpkg will not attempt to find the library namedfoo
. -
NO_VCPKG
- if set, vcpkg will not attempt to find any libraries.
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\diesel_build\vcpkg-dll\installed\x64-windows-static\include
Library paths:
C:\src\diesel_build\vcpkg-dll\installed\x64-windows-static\lib
Cargo metadata:
cargo:rustc-link-search=native=C:\src\diesel_build\vcpkg-dll\installed\x64-windows-static\lib
cargo:rustc-link-lib=static=mysqlclient