cpp检查无用的include头文件工具(include what you use)

原创不易,转载请注明出处,谢谢。

环境

ubunu 18.04
在这里插入图片描述

生成include-what-you-use可执行文件

linux下安装比较简单。
https://github.com/include-what-you-use/include-what-you-use
参考上方网址,别搞错版本,基本没啥问题。
上方链接中编译步骤讲解的非常清楚,下面是我的生成步骤:

cd include-what-you-use-clang_9.0/
mkdir build
cd build

#include-what-you-use版本不同这里装的llvm和clang不同,对应关系如下图。
sudo apt install llvm-9-dev libclang-9-dev clang-9

#注意这里的llvm-9改成你安装的对应版本。
cmake -G "Unix Makefiles" -DCMAKE_PREFIX_PATH=/usr/lib/llvm-9 ../include-what-you-use-clang_9.0
make

在这里插入图片描述
最后我们获得了include-what-you-use可执行程序。
用项目下的python脚本生成imp文件,该文件用于防止使用的时候提示你把类似#include 这种替换成#include <qstring.h>。

python3.7 generate_qt_mappings.py /media/lynn/win10_data/shellWithOtherOs/code/.test/Test4PCH/include ./qt_5.12.imp

使用

新建一个qt项目用来测试。
–mapping_file选项用于选择imp文件。
记得要加上编译参数,编译参数可以在qtCreator打开项目,rebuild一下项目,compile output里会显示出来。

单个文件使用:

./include-what-you-use -Xiwyu --mapping_file=qt_5.12.imp -I/opt/Qt5.12.2/5.12.2/gcc_64/include/QtCore -I. -isystem /usr/include/libdrm -I/opt/Qt5.12.2/5.12.2/gcc_64/mkspecs/linux-g++ -I/opt/Qt5.12.2/5.12.2/gcc_64/include /media/lynn/win10_data/shellWithOtherOs/code/.test/Test4PCH/g.hpp -fPIC

针对整个项目使用:
1.用QtCreator run qmake生成MakeFile文件
2.将include-what-you-use和生成的qt_5.12.imp文件放到MakeFile所在目录下
3.用make添加CXX自动运行include-what-you-use

# -B的意思是make所有目标,-k的意思是即使目标无法创建也继续执行。
make -B -k CXX=include-what-you-use>iwyu.out CFLAGS=" -Xiwyu --mapping_file=qt_5.12.imp"

效果

ps:发现我的imp文件好像没有起到应该有的作用,还是提示我用#include "qXX.h"替换 #include ,后续知道怎么解决再来更新。

单个文件使用:
在这里插入图片描述

项目所有文件使用:
在这里插入图片描述

注意

我用下来,该工具提示了我无用的include、不合理的include、可以改为前向声明的include、无用的成员变量,功能还是比较强大的。

但是,请注意不要100%信赖这个工具提示的信息,建议修改的时候还是要过一下脑子,不要无脑粘贴,这个过程中说不定会发现代码中不合理的地方,这样有助于你让自己的代码更合理。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值