本教程适用于 离线环境下在 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
# 解压源码
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
cd /path/to/include-what-you-use
mkdir build && cd build
cmake \
-DCMAKE_PREFIX_PATH=/opt/iwyu \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/opt/iwyu \
..
make -j12
make install
在你的 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"
替换为
)
最终 /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 脚本中,提升整个项目代码质量和可维护性。
需要帮助集成脚本或遇到特定错误,也欢迎继续提问。