An open API service indexing awesome lists of open source software.

https://github.com/mcgoo/cargo-vcpkg

Get external dependencies in one step by specifying vcpkg details in Cargo.toml
https://github.com/mcgoo/cargo-vcpkg

cargo rust vcpkg

Last synced: 4 months ago
JSON representation

Get external dependencies in one step by specifying vcpkg details in Cargo.toml

Awesome Lists containing this project

README

        

# cargo-vcpkg [![Windows](https://github.com/mcgoo/vcpkg-rs/workflows/Windows/badge.svg?branch=master)](https://github.com/mcgoo/vcpkg-rs/actions?query=workflow%3AWindows) [![macOS](https://github.com/mcgoo/vcpkg-rs/workflows/macOS/badge.svg?branch=master)](https://github.com/mcgoo/vcpkg-rs/actions?query=workflow%3AmacOS) [![Linux](https://github.com/mcgoo/vcpkg-rs/workflows/Linux/badge.svg?branch=master)](https://github.com/mcgoo/vcpkg-rs/actions?query=workflow%3ALinux)

[Changelog](https://github.com/mcgoo/cargo-vcpkg/blob/master/CHANGELOG.md)

This command `cargo vcpkg` will create a [vcpkg](https://github.com/microsoft/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](https://crates.io/crates/vcpkg) will be able to find libraries automatically.

## Example

```toml
[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
[...]
```

## Per target configuration

It is also possible to install different sets of packages per target, and override the vcpkg triplet to install.

```toml
[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"] }
```

## Development dependencies

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.

```toml
[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" ] }
```

## Overlay triplets

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.

[triplet files]: https://vcpkg.readthedocs.io/en/latest/users/triplets/

```toml
[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`.

## Installation

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.

## License

See LICENSE-APACHE, and LICENSE-MIT for details.