Boost logo

Boost :

From: Boris Kolpackov (boris_at_[hidden])
Date: 2022-05-06 09:16:17


Adam Getchell via Boost <boost_at_[hidden]> writes:

> For what it’s worth, having tried Biicode (Conan’s predecessor),
> Conan, Spack, Conda, and vcpkg, vcpkg is the only package manager
> for which I’ve been able to consistently (i.e. since I started
> using it a few years ago) build combinations of
> {macOS, Linux, Windows } x { gcc, clang, msvc}.

I see you haven't tried build2 (though admittedly we only have
Boost for ~1 year).

We currently have the following combinations building successfully
(sans Boost bugs) and continuously on our CI[1]. All in all, almost
10K builds covering 2 versions of Boost.

MacOS x {GCC, Clang}
Linux x {GCC, Clang}
Windows x {MSVC, Clang, MinGW GCC}
Wasm x {Emscripten}

You can see the list of all the available build configurations
here[2].

Note also that the Windows x Clang combination is Clang targeting
the MSVC runtime, not MinGW. And it's with the vanilla clang/clang++
driver, not the clang-cl wrapper.

This can be used to highlight the biggest problem (IMO) with
package managers like Conan and vcpkg: they are a hodgepodge
of build systems. For example, if you try to build libbost-regex
with vcpkg, it will use Boost.Build for libbost-regex. But this
library depends on ICU, which uses its own home-grown build system.
As a result, adding support for something like Clang targeting MSVC
with vanilla drivers is essentially an insurmountable task. If
interested, you can read on other implications (like faster builds)
here[3].

[1] https://cppget.org/?builds=libboost-*
[2] https://ci.cppget.org/?build-configs
[3] https://build2.org/faq.xhtml#why-package-managers


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk