Use following instructions to install IWYU (https://include-what-you-use.org/) on Ubuntu 18.04.3 LTS:
sudo apt-get update
sudo apt-get install -y build-essential cmake git zlib1g-dev libncurses5-dev llvm-6.0-dev libclang-6.0-dev libclang-6.0-dev clang-6.0
git clone https://github.com/include-what-you-use/include-what-you-use.git iwyu.git
cd iwyu.git
git checkout clang_6.0
mkdir -p build
cd build
cmake -DIWYU_LLVM_ROOT_PATH=/usr/lib/llvm-6.0 ..
make
make install
Once installation is complete, you will find `include-what-you-need`
# include-what-you-use --version
include-what-you-use 0.10 (git:a1878c4) based on clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final)
To execute include-what-you-need
:
Build your cpp project with cmake and pass on an extra parameter -DCMAKE_EXPORT_COMPILE_COMMANDS=TRUE
to cmake. It will produce `compile_commands.json` file in your build folder for the project.
Execute iwyu_tool.py -p </path/to/folder/having/compile_command.json>
. It may take time depending upon the code size.
fix_includes
can be used to apply recommended changes.
To use it in VSCode add following to the tasks.json
{
"label": "Run iwyu",
"command": "iwyu_tool.py",
"args": [
"-p",
"${workspaceRoot}/build"
],
"presentation": {
"echo": true,
"reveal": "always",
"focus": true,
"panel": "shared",
"showReuseMessage": true,
"clear": false
},
"problemMatcher": "$gcc"
}
Ref: https://gist.github.com/aakbar5/268a2072138345893b7f82590dcc3d26