Allow using vcpkg on any Windows target, and use find_package #509
+7
−8
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This change addresses two issues building for Windows:
Allow using
vcpkg
on any Windows build, not just MSVC.vcpkg-rs
includescurl-sys
as part of its integration tests, butcurl-sys
includes extra guards which block its use with non-MSVC targets. While it doesn't support-pc-windows-gnu
(mingw) yet, its integration tests will try to buildcurl-sys
, so these guards are a problem.That part of the change should have no effect for
*-pc-windows-gnu
, and should still fall back to existing options.Using
vcpkg
with the GNU toolchain is particularly useful for cross-compiling Windows binaries on non-Windows platforms where MSYS' version ofpacman
is not available. Technically you could also usevcpkg
to provide non-Windows platforms' libraries, but I haven't gone that far as yet.Try to use
vcpkg::find_package
forlibcurl
and its dependencies, rather than trying to guess which features it was built with.Those guesses are currently wrong on
-pc-windows-gnu
, as they assume MSVC-style library naming (sozlib
is broken); but I've left these alone for now to reduce risk.Those guesses also result in spurious additional linkages on
-pc-windows-msvc
: for example, ifcurl
was not built withlibssh
oropenssl
support, butlibssh
oropenssl
was installed on the build machine, it would result in a useless extra linkage.While here, I've disabled
fail_fast
in the CI configuration, as a single-platform flake cancels tests on slower platforms (eg: MSVC).