IncludeGuardian
IncludeGuardian is a free tool to help improve C and C++ build
times. The most time consuming part of build times is usually not
compiling or linking, but preprocessing and syntax checking files that have been
#include
ed. A simple "Hello World" application in C++ will be
preprocessed to almost a 1MB file from only the #include
<iostream>
line. This is all run through the compiler and will take
an additional 150ms. If a commonly used header in your application is particularly
large, or includes a large number of other headers, this can add minutes to your
build time if includes in hundreds source files.
IncludeGuardian makes recommendations for your project on how to reduce work the compiler needs to do. These suggestions include:
- What files to add to a precompiled header
- Which
#include
directives are the most expensive - Which header files should be split up
- Which header+source pairs are unused
- Which header+source files should be combined to be header-only
- Which files have an incorrect include guard
With each suggestion IncludeGuardian will give a percentage saving for the number of preprocessing tokens that need to be compiled. Although this is not a perfect substitute for the actual time saved, it is a reasonable alternative that will give a deterministic result in a fraction of the time.
See the instructions page on how to download and run IncludeGuardian.
For an example, see cmake_analysis.yaml for the output when running over the CMake project.