By all initial indications, boost dynamic_bitset is header only.
The documentation implies that it is header only:
The class dynamic_bitset is defined in the header boost/dynamic_bitset.hpp. Also, there is a forward declaration for dynamic_bitset in the header boost/dynamic_bitset_fwd.hpp.
The library does not appear in the list of "non header-only" libraries in the Getting Started documentation:
Finally, the bootstrap.sh --show-libraries
command on my local system with Boost 1.70.0 doesn't list dynamic_bitset
as among those requiring separate build and installation:
The Boost libraries requiring separate building and installation are:
- atomic
- chrono
- container
- context
- contract
- coroutine
- date_time
- exception
- fiber
- filesystem
- graph
- graph_parallel
- headers
- iostreams
- locale
- log
- math
- mpi
- program_options
- python
- random
- regex
- serialization
- stacktrace
- system
- test
- thread
- timer
- type_erasure
- wave
However, when I use bcp --list
to list the dependencies in order to use only this library, .cpp files are included:
CAUTION: don't know how to trace depenencies through macro: " <memory>" in file: boost/exception/exception.hpp
CAUTION: don't know how to trace depenencies through macro: "PP1" in file: boost/type_traits/detail/is_function_ptr_helper.hpp
CAUTION: don't know how to trace depenencies through macro: "PP1" in file: boost/type_traits/detail/is_function_ptr_helper.hpp
CAUTION: don't know how to trace depenencies through macro: "PP1" in file: boost/type_traits/detail/is_function_ptr_helper.hpp
CAUTION: don't know how to trace depenencies through macro: "PP1" in file: boost/type_traits/detail/is_function_ptr_tester.hpp
CAUTION: don't know how to trace depenencies through macro: "PP2" in file: boost/type_traits/detail/is_function_ptr_tester.hpp
CAUTION: don't know how to trace depenencies through macro: "PP3" in file: boost/type_traits/detail/is_function_ptr_tester.hpp
CAUTION: don't know how to trace depenencies through macro: "PPI" in file: boost/type_traits/detail/is_mem_fun_pointer_impl.hpp
CAUTION: don't know how to trace depenencies through macro: "PPI" in file: boost/type_traits/detail/is_mem_fun_pointer_impl.hpp
CAUTION: don't know how to trace depenencies through macro: "PPI" in file: boost/type_traits/detail/is_mem_fun_pointer_impl.hpp
CAUTION: don't know how to trace depenencies through macro: "PPI" in file: boost/type_traits/detail/is_mem_fun_pointer_tester.hpp
CAUTION: don't know how to trace depenencies through macro: "PPI" in file: boost/type_traits/detail/is_mem_fun_pointer_tester.hpp
CAUTION: don't know how to trace depenencies through macro: "PPI" in file: boost/type_traits/detail/is_mem_fun_pointer_tester.hpp
CAUTION: don't know how to trace depenencies through macro: "BOOST_TYPE_INDEX_USER_TYPEINDEX" in file: boost/type_index.hpp
CAUTION: don't know how to trace depenencies through macro: " <memory>" in file: boost/exception/detail/shared_ptr.hpp
CAUTION: dependent file libs/filesystem/v2 does not exist.
Found while scanning file boost/filesystem.hpp
CAUTION: dependent file libs/filesystem/v3 does not exist.
Found while scanning file boost/filesystem.hpp
boost/config/compiler/vacpp.hpp
boost/config/compiler/xlcpp.hpp
boost/config/compiler/xlcpp_zos.hpp
boost/config/stdlib/libcpp.hpp
boost/config/stdlib/libstdcpp3.hpp
boost/config/stdlib/vacpp.hpp
boost/config/stdlib/xlcpp_zos.hpp
boost/predef/language/stdcpp.h
boost/predef/library/std/stdcpp3.h
boost/predef/library/std/vacpp.h
boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp
boost/test/impl/cpp_main.ipp
libs/chrono/src/chrono.cpp
libs/chrono/src/process_cpu_clocks.cpp
libs/chrono/src/thread_clock.cpp
libs/dynamic_bitset/example/example1.cpp
libs/dynamic_bitset/example/example2.cpp
libs/dynamic_bitset/example/example3.cpp
libs/dynamic_bitset/example/timing_tests.cpp
libs/dynamic_bitset/test/dyn_bitset_unit_tests1.cpp
libs/dynamic_bitset/test/dyn_bitset_unit_tests2.cpp
libs/dynamic_bitset/test/dyn_bitset_unit_tests3.cpp
libs/dynamic_bitset/test/dyn_bitset_unit_tests4.cpp
libs/dynamic_bitset/test/dyn_bitset_unit_tests5.cpp
libs/dynamic_bitset/test/test_ambiguous_set.cpp
libs/dynamic_bitset/test/test_lowest_bit.cpp
libs/filesystem/src/codecvt_error_category.cpp
libs/filesystem/src/operations.cpp
libs/filesystem/src/path.cpp
libs/filesystem/src/path_traits.cpp
libs/filesystem/src/portability.cpp
libs/filesystem/src/unique_path.cpp
libs/filesystem/src/utf8_codecvt_facet.cpp
libs/filesystem/src/windows_file_codecvt.cpp
libs/serialization/src/archive_exception.cpp
libs/serialization/src/basic_archive.cpp
libs/serialization/src/basic_iarchive.cpp
libs/serialization/src/basic_iserializer.cpp
libs/serialization/src/basic_oarchive.cpp
libs/serialization/src/basic_oserializer.cpp
libs/serialization/src/basic_pointer_iserializer.cpp
libs/serialization/src/basic_pointer_oserializer.cpp
libs/serialization/src/basic_serializer_map.cpp
libs/serialization/src/basic_text_iprimitive.cpp
libs/serialization/src/basic_text_oprimitive.cpp
libs/serialization/src/basic_text_wiprimitive.cpp
libs/serialization/src/basic_text_woprimitive.cpp
libs/serialization/src/basic_xml_archive.cpp
libs/serialization/src/binary_iarchive.cpp
libs/serialization/src/binary_oarchive.cpp
libs/serialization/src/binary_wiarchive.cpp
libs/serialization/src/binary_woarchive.cpp
libs/serialization/src/codecvt_null.cpp
libs/serialization/src/extended_type_info.cpp
libs/serialization/src/extended_type_info_no_rtti.cpp
libs/serialization/src/extended_type_info_typeid.cpp
libs/serialization/src/polymorphic_binary_iarchive.cpp
libs/serialization/src/polymorphic_binary_oarchive.cpp
libs/serialization/src/polymorphic_iarchive.cpp
libs/serialization/src/polymorphic_oarchive.cpp
libs/serialization/src/polymorphic_text_iarchive.cpp
libs/serialization/src/polymorphic_text_oarchive.cpp
libs/serialization/src/polymorphic_text_wiarchive.cpp
libs/serialization/src/polymorphic_text_woarchive.cpp
libs/serialization/src/polymorphic_xml_iarchive.cpp
libs/serialization/src/polymorphic_xml_oarchive.cpp
libs/serialization/src/polymorphic_xml_wiarchive.cpp
libs/serialization/src/polymorphic_xml_woarchive.cpp
libs/serialization/src/stl_port.cpp
libs/serialization/src/text_iarchive.cpp
libs/serialization/src/text_oarchive.cpp
libs/serialization/src/text_wiarchive.cpp
libs/serialization/src/text_woarchive.cpp
libs/serialization/src/utf8_codecvt_facet.cpp
libs/serialization/src/void_cast.cpp
libs/serialization/src/xml_archive_exception.cpp
libs/serialization/src/xml_grammar.cpp
libs/serialization/src/xml_iarchive.cpp
libs/serialization/src/xml_oarchive.cpp
libs/serialization/src/xml_wgrammar.cpp
libs/serialization/src/xml_wiarchive.cpp
libs/serialization/src/xml_woarchive.cpp
libs/system/src/error_code.cpp
libs/test/src/compiler_log_formatter.cpp
libs/test/src/cpp_main.cpp
libs/test/src/debug.cpp
libs/test/src/decorator.cpp
libs/test/src/execution_monitor.cpp
libs/test/src/framework.cpp
libs/test/src/junit_log_formatter.cpp
libs/test/src/plain_report_formatter.cpp
libs/test/src/progress_monitor.cpp
libs/test/src/results_collector.cpp
libs/test/src/results_reporter.cpp
libs/test/src/test_framework_init_observer.cpp
libs/test/src/test_main.cpp
libs/test/src/test_tools.cpp
libs/test/src/test_tree.cpp
libs/test/src/unit_test_log.cpp
libs/test/src/unit_test_main.cpp
libs/test/src/unit_test_monitor.cpp
libs/test/src/unit_test_parameters.cpp
libs/test/src/xml_log_formatter.cpp
libs/test/src/xml_report_formatter.cpp
libs/timer/src/auto_timers_construction.cpp
libs/timer/src/cpu_timer.cpp
Therefore I conclude that bcp
copy won't include only header files.
Is Boost dynamic_bitset
really header-only and if so, how do I include only the relevant headers in my project?
From the docs:
It should be noted that in practice bcp can produce a rather "fat" list of dependencies, reasons for this include:
It searches for library names first, so using "regex" as a name will give you everything in the libs/regex directory and everything that depends on. This can be a long list as all the regex test and example programs will get scanned for their dependencies. If you want a more minimal list, then try using the names of the headers you are actually including, or use the --scan option to scan your source code.
...
So, you are getting a fat list of dependencies because the search includes the tests and examples which are themselves not header-only, and have further non-header-only dependencies.
Is Boost dynamic_bitset really header-only
I see no reason to doubt that.
if so, how do I include only the relevant headers in my project?
As per the quoted suggestion, you might attempt instead: bcp --list boost/dynamic_bitset.hpp
for a leaner list.