本教程适用于 离线环境下在 CentOS 7.9 系统中使用 GCC 9 离线安装 IWYU 的完整步骤,涵盖 Clang 11.1.0 编译、IWYU 构建以及头文件自动优化流程。
📥 一、准备安装包
请提前下载以下源码包(可通过在线机器提前下载,再传输到离线环境):
LLVM 源码:
https://github.com/llvm/llvm-project/releases/download/llvmorg-11.1.0/llvm-11.1.0.src.tar.xz
Clang 源码:
https://github.com/llvm/llvm-project/releases/download/llvmorg-11.1.0/clang-11.1.0.src.tar.xz
IWYU 源码:
git clone -b clang_11 https://github.com/include-what-you-use/include-what-you-use.git
🧱 二、编译 Clang 11.1.0
# 解压源码
tar xf llvm-11.1.0.src.tar.xz
tar xf clang-11.1.0.src.tar.xz# 重命名 clang 并移动到 LLVM 源码目录下
mv clang-11.1.0.src llvm-11.1.0.src/tools/clang# 创建构建目录并进入
mkdir llvm-build && cd llvm-build# 生成 Makefile
cmake -G "Unix Makefiles" \-DCMAKE_BUILD_TYPE=Release \-DLLVM_ENABLE_PROJECTS=clang \-DCMAKE_C_COMPILER=gcc \-DCMAKE_CXX_COMPILER=g++ \-DCMAKE_INSTALL_PREFIX=/opt/iwyu \../llvm-11.1.0.src# 编译并安装
make -j12
make install
🧩 三、编译 IWYU
cd /path/to/include-what-you-use
mkdir build && cd buildcmake \-DCMAKE_PREFIX_PATH=/opt/iwyu \-DCMAKE_BUILD_TYPE=Release \-DCMAKE_INSTALL_PREFIX=/opt/iwyu \..
make -j12
make install
⚙️ 四、在 CMake 项目中启用 IWYU
在你的 CMakeLists.txt
中添加如下配置:
set(CMAKE_CXX_INCLUDE_WHAT_YOU_USE /opt/iwyu/bin/include-what-you-use)# 静态库需要额外添加
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
📊 五、执行头文件分析
python3 /path/to/include-what-you-use/iwyu_tool.py -p ./build > iwyu.out
参数说明:
-p ./build
:指定包含compile_commands.json
的目录(通常是构建目录)> iwyu.out
:将分析结果输出到文件中,便于后续处理
🔧 六、自动优化头文件
使用 IWYU 提供的 fix_includes.py
自动修复头文件:
python3 /path/to/include-what-you-use/fix_includes.py < iwyu.out
脚本功能:
✅ 删除无用的
#include
✅ 添加遗漏的
#include
✅ 替换为更合适的头文件(如将
"my_string.h"
替换为<string>
)
✅ 七、安装完成后结构检查
最终 /opt/iwyu
应包含:
/opt/iwyu/
├── bin/
│ └── include-what-you-use
├── include/
├── lib/
└── ...
如有需要,可将 /opt/iwyu/bin
添加到环境变量中,便于全局使用:
export PATH=/opt/iwyu/bin:$PATH
如需继续进行 IWYU 的静态分析优化工作,也可以配合 Bear 工具生成 compile_commands.json
,提高分析准确性。
如果你需要支持自动生成头文件优化建议和分析报告,也可集成到 CI 脚本中,提升整个项目代码质量和可维护性。
需要帮助集成脚本或遇到特定错误,也欢迎继续提问。