This command cargo vcpkg
will create a vcpkg tree and install the packages specified in Cargo.toml
files in the crate being built and crates it depends on. Crates that use the vcpkg crate will be able to find libraries automatically.
[package.metadata.vcpkg]
git = "https://github.com/microsoft/vcpkg"
rev = "4c1db68"
dependencies = ["pkg1", "pkg2"]
$ cargo install cargo-vcpkg
$ cargo vcpkg build
Fetching vcpkg
Checkout rev/tag/branch 4c1db68
Compiling pkg1, pkg2
Finished in 1.93s
$ cargo build
[...]
It is also possible to install different sets of packages per target, and override the vcpkg triplet to install.
[package.metadata.vcpkg]
git = "https://github.com/microsoft/vcpkg"
rev = "4c1db68"
dependencies = ["sdl2"]
[package.metadata.vcpkg.target]
x86_64-apple-darwin = { dependencies = ["sdl2", "sdl2-gfx" ] }
x86_64-unknown-linux-gnu = { dependencies = ["sdl2", "opencv"] }
x86_64-pc-windows-msvc = { triplet = "x64-windows-static", dependencies = ["sdl2", "zeromq"] }
Setting the dev-dependencies
key allows building libraries that are required by binaries in this crate. Only the packages in the dependencies
key will be installed if cargo vcpkg
is run on a crate that depends on this crate.
[package.metadata.vcpkg]
git = "https://github.com/microsoft/vcpkg"
rev = "4c1db68"
dependencies = ["sdl2"]
dev-dependencies = ["sdl2-image"]
[package.metadata.vcpkg.target]
x86_64-apple-darwin = { dev-dependencies = ["sdl2-gfx" ] }
Setting the overlay-triplets-path
key allows you use custom triplet files in
your build. The value of this key should be the path to a directory containing
triplet files. These files will be made available during the vcpkg build through
its --overlay-triplets
argument.
[package.metadata.vcpkg]
git = "https://github.com/microsoft/vcpkg"
rev = "4c1db68"
dependencies = ["sdl2"]
overlay-triplets-path = "support/custom-triplets"
[package.metadata.vcpkg.target]
x86_64-pc-windows-msvc = { triplet = "x64-windows-static-release" }
Here, the repository should contain a file named
support/custom-triplets/x64-windows-static-release.cmake
.
Install by running
cargo install cargo-vcpkg
crates.io/vcpkg needs older Rust for compatibility with older projects, while cargo-vcpkg would like to track new versions for the latest features in Cargo.toml, hense the split of repos between components.
See LICENSE-APACHE, and LICENSE-MIT for details.