本教程適用于 離線環境下在 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 腳本中,提升整個項目代碼質量和可維護性。
需要幫助集成腳本或遇到特定錯誤,也歡迎繼續提問。