环球网校是美国纳斯达克上市企业欢聚时代(NASDAQ:YY)旗下品牌 | 住房和城乡建设部 建筑人才培训合作单位
您现在的位置在: > 建筑考试 > 一级建造师 > 考试动态 >

华为云社区《用what-you冗余拯救混乱的头文件-云》

2023-01-11 来源:网络 作者:佚名

摘要:使用-what-you-use(iwyu/IWYU)清理冗余头文件,补充必要头文件。

#

本文分享自华为云社区《用 what you use拯救混乱的头文件-云社区-华为云》,作者: 村头树下 。

#

背景

#

面对大型C/C++项目的时候,混乱的头文件引用,经常会有一种剪不断理还乱的感觉。长年累月的项目迭代,需求更新。导致头文件未能及时随着代码的变动而更新,成为了冗余的负担。这会增加整体项目的编译时间。如果没有一个工具来帮助我整理这些头文件,我是绝对不会动一丝整改他们的想法。幸运的是,有一个工具可以满足我们的要求– what you use.

#

简介

#

在各种C/C++编码规范中苹果开发者中心,一般都会提到几点: #

禁止包含用不到的头文件

#

用不到的头文件被包含的同时,引入了不必要的依赖,增加了模块之间的耦合度,只要该头文件修改,代码就会重新编译。 #

头文件应该自包含

#

如果一个文件包含某个头文件。想要正常工作,还必须包含另外一个头文件,这会增加使用的负担。

#

所以这也是整理头文件的意义。

#

这也是使用-what-you-use(下称IWYU)的初衷。 #

安装

#

附上此项目的主页

#

IWYU依赖Clang,而且它针对Clang的各个版本都有自己对应的版本。所以在安装IWYU的时候,首先需确定你的Clang是什么版本。由于本人之前未曾安装过Clang,所以首先要安装Clang.

#

Clang的安装 #

建议直接源码编译,减少符号不兼容等奇怪的错误

#

克隆llvm仓库 #

git clone #

切到想要编译的llvm版本

#


cd llvm-project
git checkout llvmorg-14.0.0 # 
#

构建LLVM和Clang #


cd llvm-project
mkdir build && cd build
cmake -DLLVM_ENABLE_PROJECTS=clang -DCMAKE_BUILD_TYPE=Release -G “Unix Makefiles” …/llvm
make -j48 
#
#

IWYU安装

#

克隆IWYU仓库

#

git clone #

cd -what-you-use

#

切换到与clang对应的分支,由于刚才安装的是14.0的版本苹果开发者中心,因此这里也切换到对应版本

#


git checkeout clang_14 
#
#

在IWYU上一层创建文件夹build

#


mkdir build && cd build
cmake -G “Unix Makefiles” -DCMAKE_PREFIX_PATH=…/llvm/llvm-project/llvm/ …/include-what-you-use/ 
#

#

指向刚才构建的llvm目录。如果构建成功,你会看到

#

开始编译IWYU #


cd …/include-what-you-use/
make -j48 
#
#

编译成功 #

如果希望更方便的使用iwyu,可以将其bin加入环境变量中,我是创建了一个软链接到/usr/bin目录下 #


ln -s /the/path/of/include-what-you-use/bin/include-what-you-use /usr/bin/iwyu 

#

#

如果一切妥当,就可以用iwyu -v来检查是否安装成功了

#

使用

#

这里介绍一下在Clion环境下,如何使用IWYU #

打开Clion->File->->Build,,页面 #

点击下方,第一时间了解华为云新鲜技术~

#

华为云博客_大数据博客_AI博客_云计算博客_开发者中心-华为云 #

责编:admin 返回顶部  打印

关于我们联系我们友情链接网站声明网站地图广告服务帮助中心