[−][src]Crate vcpkg
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.
-
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
-
VCPKGRS_NO_FOO
- if set, vcpkg-rs will not attempt to find the library namedfoo
. -
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
Structs
Config | |
Library | Details of a package that was found |
Enums
Error |
Functions
find_package | Find the package |