Boost C++ Libraries: Ticket #2111: boost headers always include too many platform headers https://svn.boost.org/trac10/ticket/2111 <p> #including boost/config.hpp on MSVC causes the inclusion of a large number of platform header files (see below for a boost 1.32 example for shared_ptr.hpp). This *seriously* degrades compilation times. For large systems with &gt;1MLOC the degradation is just impratical and puts off big projects from using boost completely. </p> <p> boost/config.h should be split into smaller function-specific header files (e.g. strings, streams, threads, etc.) and every boost header file should include only the functions it needs. </p> <pre class="wiki">Note: including file: c:\Boost\include\boost-1_32\boost/shared_ptr.hpp Note: including file: c:\Boost\include\boost-1_32\boost/config.hpp Note: including file: c:\Boost\include\boost-1_32\boost/config/user.hpp Note: including file: c:\Boost\include\boost-1_32\boost/config/select_compiler_config.hpp Note: including file: c:\Boost\include\boost-1_32\boost/config/compiler/visualc.hpp Note: including file: c:\Boost\include\boost-1_32\boost/config/select_stdlib_config.hpp Note: including file: C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\utility Note: including file: C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\iosfwd Note: including file: C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\cstdio Note: including file: C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\yvals.h Note: including file: C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\use_ansi.h Note: including file: C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\stdio.h Note: including file: C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\cstring Note: including file: C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\string.h Note: including file: C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\cwchar Note: including file: C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\wchar.h Note: including file: C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\xstddef Note: including file: C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\cstddef Note: including file: C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\stddef.h Note: including file: c:\Boost\include\boost-1_32\boost/config/stdlib/dinkumware.hpp Note: including file: c:\Boost\include\boost-1_32\boost/config/select_platform_config.hpp Note: including file: c:\Boost\include\boost-1_32\boost/config/platform/win32.hpp Note: including file: c:\Boost\include\boost-1_32\boost/config/suffix.hpp Note: including file: C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\limits.h Note: including file: c:\Boost\include\boost-1_32\boost/assert.hpp Note: including file: C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\assert.h Note: including file: c:\Boost\include\boost-1_32\boost/checked_delete.hpp Note: including file: c:\Boost\include\boost-1_32\boost/throw_exception.hpp Note: including file: c:\Boost\include\boost-1_32\boost/config.hpp Note: including file: c:\Boost\include\boost-1_32\boost/detail/shared_count.hpp Note: including file: c:\Boost\include\boost-1_32\boost/config.hpp Note: including file: c:\Boost\include\boost-1_32\boost/detail/lightweight_mutex.hpp Note: including file: c:\Boost\include\boost-1_32\boost/config.hpp Note: including file: c:\Boost\include\boost-1_32\boost/detail/lwm_win32.hpp Note: including file: C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\memory Note: including file: C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\iterator Note: including file: C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\xutility Note: including file: C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\climits Note: including file: C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\xmemory Note: including file: C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\cstdlib Note: including file: C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\stdlib.h Note: including file: C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\new Note: including file: C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\exception Note: including file: C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\eh.h Note: including file: C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\functional Note: including file: C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\typeinfo Note: including file: C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\typeinfo.h Note: including file: C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\stdexcpt.h Note: including file: c:\Boost\include\boost-1_32\boost/detail/workaround.hpp Note: including file: C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\algorithm </pre> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/2111 Trac 1.4.3 Marshall Clow Sat, 26 Jul 2008 03:46:15 GMT component changed https://svn.boost.org/trac10/ticket/2111#comment:1 https://svn.boost.org/trac10/ticket/2111#comment:1 <ul> <li><strong>component</strong> <span class="trac-field-old">None</span> → <span class="trac-field-new">Building Boost</span> </li> </ul> Ticket Marshall Clow Tue, 09 Sep 2008 19:07:48 GMT type, severity changed https://svn.boost.org/trac10/ticket/2111#comment:2 https://svn.boost.org/trac10/ticket/2111#comment:2 <ul> <li><strong>type</strong> <span class="trac-field-old">Bugs</span> → <span class="trac-field-new">Feature Requests</span> </li> <li><strong>severity</strong> <span class="trac-field-old">Showstopper</span> → <span class="trac-field-new">Problem</span> </li> </ul> Ticket Vladimir Prus Sat, 21 Mar 2009 19:00:56 GMT component changed; owner set https://svn.boost.org/trac10/ticket/2111#comment:3 https://svn.boost.org/trac10/ticket/2111#comment:3 <ul> <li><strong>owner</strong> set to <span class="trac-author">John Maddock</span> </li> <li><strong>component</strong> <span class="trac-field-old">Building Boost</span> → <span class="trac-field-new">config</span> </li> </ul> Ticket John Maddock Mon, 20 Apr 2009 11:46:57 GMT status changed; resolution set https://svn.boost.org/trac10/ticket/2111#comment:4 https://svn.boost.org/trac10/ticket/2111#comment:4 <ul> <li><strong>status</strong> <span class="trac-field-old">new</span> → <span class="trac-field-new">closed</span> </li> <li><strong>resolution</strong> → <span class="trac-field-new">wontfix</span> </li> </ul> <p> The current Boost.Config has been changed to include &lt;cstddef&gt; rather than &lt;utility&gt; which cuts down the platform #includes somewhat. </p> <p> Other than that, I don't see how we can streamline this: the std lib and platform feature detection code has to include a certain number of platform headers to work. I also note that the biggest pull-in of headers in your example comes from &lt;memory&gt;, are you really suggesting that shared_ptr could live without that #include? </p> <p> Sorry, but I don't see this as a bug. </p> Ticket