Which Boost libraries are header-only? And which require building libraries?
Does such a list exist?
Most Boost libraries are header-only: they consist entirely of header files containing templates and inline functions, and require no separately-compiled library binaries or special treatment when linking. The only Boost libraries that must be built separately are: Boost.
Boost Process is header-only, so you don't have to compile it separately.
Boost. DateTime: This dependency is mandatory, but even if Boost. DateTime is a non header-only library Boost. Thread uses only parts that are header-only, so in principle you should not need to link with the library.
By default, Boost. Asio is a header-only library. However, some developers may prefer to build Boost. Asio using separately compiled source code.
The list of libraries that require building is here for Unix-like systems, and here for Windows.
For the current release, 1.58, both are the same:
A few libraries have optional separately-compiled binaries:
Note that some libraries may depend on these (for example, Asio depends on System as pointed out in the comments), so you may still need to build something even if the library you want isn't on the list.
Actually, even ./bootstrap.sh --show-libraries
is somewhat incorrect too, because some libraries depend on that listed libraries.
It is possible to get list of header-only libraries with the Boost BCP tool, launching the tool on every library and removing those linking any binaries. That is what was done in How To Build Header Only Boost.
For Boost 1.67.0 the resulting list was:
accumulators align any array assert assign bind callable_traits circular_buffer compatibility concept_check config container_hash conversion convert core crc detail disjoint_sets dynamic_bitset endian foreach format function functional function_types fusion geometry gil hana heap hof icl integer interprocess intrusive io iterator lambda lexical_cast locale local_function logic metaparse move mp11 mpl msm multi_array multi_index optional phoenix poly_collection polygon predef preprocessor property_tree proto ptr_container qvm ratio rational scope_exit signals2 smart_ptr sort static_assert throw_exception tokenizer tti tuple type_index typeof type_traits units unordered utility uuid variant vmd winapi xpressive
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With