Ваш файл включает половину стандартной библиотеки, а использует только std::vector?
IWYU (include-what-you-use) — инструмент от Google, который анализирует какие заголовочные файлы реально используются и предлагает минимальный набор
includes. Ускоряет компиляцию и делает зависимости явными.🍴 Установка:
# Ubuntu
sudo apt install iwyu
# Из исходников с нужной версией clang
git clone https://github.com/include-what-you-use/include-what-you-use.git
✏️ Использование:
# Анализ файла
include-what-you-use main.cpp
# С применением исправлений
include-what-you-use main.cpp 2>&1 | fix_includes.py
# Для всего CMake проекта
cmake -DCMAKE_CXX_INCLUDE_WHAT_YOU_USE=include-what-you-use ..
❗️ Основные проблемы, которые находит:
• Лишние includes — файлы, которые не используются
• Транзитивные includes — зависимости через другие заголовки
• Forward declarations — где можно заменить include на forward decl
• Неполные includes — когда используется тип, но не включён его заголовок
✏️ Github
Библиотека C/C++ разработчика
#под_капотом