Какие библиотеки Boost предназначены только для заголовков?

Какие библиотеки Boost предназначены только для заголовков? А какие требуют сборки библиотек?

Существует ли такой список?

Ответ 1

Список библиотек, требующих создания, здесь для Unix-подобных систем и здесь для Windows.

Для текущей версии 1.58 оба варианта:

  • Boost.Chrono
  • Boost.Context
  • Boost.Filesystem
  • Boost.GraphParallel
  • Boost.IOStreams
  • Boost.Locale
  • Boost.MPI
  • Boost.ProgramOptions
  • Boost.Python
  • библиотека Boost.regex
  • Boost.Serialization
  • Boost.Signals
  • Boost.System
  • Boost.Thread
  • Boost.Timer
  • Boost.Wave

В нескольких библиотеках есть дополнительные скомпилированные двоичные файлы:

  • Boost.DateTime
  • Boost.Graph
  • Boost.Math
  • Boost.Random
  • Boost.Test
  • Boost.Exception

Обратите внимание, что некоторые библиотеки могут зависеть от них (например, Asio зависит от System, как указано в комментариях), поэтому вам все равно нужно что-то создать, даже если нужная библиотека отсутствует в списке.

Ответ 2

Я думаю, что приведенный выше список не является точным, хотя это из официальной документации:

https://svn.boost.org/trac10/ticket/13222

Вы можете запросить список библиотек, которые нужно собрать:

>    ./bootstrap.sh --show-libraries

   The Boost libraries requiring separate building and installation are:

    atomic
    chrono
    container
    context
    coroutine
    date_time
    exception
    fiber
    filesystem
    graph
    graph_parallel
    iostreams
    locale
    log
    math
    metaparse
    mpi
    program_options
    python
    random
    regex
    serialization
    signals
    stacktrace
    system
    test
    thread
    timer
    type_erasure
    wave

Примечание. В Windows вы должны вызвать bootstrap.bat для сборки b2, а затем вызвать b2 --show-libraries.

Ответ 3

На самом деле, даже ./bootstrap.sh --show-libraries тоже несколько некорректна, потому что некоторые библиотеки зависят от перечисленных библиотек.

С помощью инструмента Boost BCP можно получить список библиотек только для заголовков, запустив этот инструмент в каждой библиотеке и удалив те, которые связывают любые двоичные файлы. Это то, что было сделано в статье Как построить только заголовок.

Для Boost 1.67.0 результирующий список был:

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