vcpkg builds every port twice (release + debug) in manifest mode and the VCPKG_BUILD_TYPE environment variable is ignored there; pin the build type in overlay triplets instead (tooling/vcpkg-triplets/release, one per supported triplet). The release configuration is what both workflows consume: FFMPEG_DIR drives the release layout (lib/pkgconfig) and the C ABI is identical for the debug binary CI tests. Verified locally in debian:12: a release-only overlay builds zlib/libpng/openssl/pkgconf/ libsndfile with zero debug trees. Debug-only is not an option: ports like zlib patch files in the release layout and fail when only the debug configuration is built.
24 lines
1.1 KiB
Markdown
24 lines
1.1 KiB
Markdown
# vcpkg overlay triplets
|
|
|
|
Small overlays over vcpkg's builtin triplets, passed to `vcpkg install`
|
|
with `--overlay-triplets <dir>` (both workflows, see
|
|
`.github/workflows/ci.yml` and `.github/workflows/cd.yml`).
|
|
|
|
`release/` pins every supported triplet to the release configuration
|
|
(`set(VCPKG_BUILD_TYPE release)`): vcpkg otherwise builds every port
|
|
twice — release and debug — which doubles the FFmpeg/port build time in
|
|
CI and CD. Our build scripts only ever consume the release layout
|
|
(`FFMPEG_DIR=<prefix>` with `<prefix>/lib/pkgconfig`, plus the linker
|
|
paths those `.pc` files carry), so the debug half was pure waste; the C
|
|
libraries' ABI is identical for the debug cargo binary CI tests.
|
|
|
|
Notes:
|
|
|
|
- The non-build-type settings mirror vcpkg's builtin triplets
|
|
(`scripts/triplets/`) so the overlay stays a drop-in replacement; a
|
|
vcpkg upgrade that changes a builtin triplet should be mirrored here.
|
|
- `VCPKG_BUILD_TYPE` must be set in the triplet: the environment
|
|
variable of the same name is ignored in manifest mode.
|
|
- Do not try `debug` here: several ports (e.g. zlib) patch files in the
|
|
release layout and fail when only the debug configuration is built.
|