У меня есть проект CMake С++, который быстро растет и часто меняется. Я пытаюсь сократить время компиляции до минимума.
Часто, когда я перестраиваю проект, особенно после изменения заголовка, я удивляюсь, сколько единиц компиляции нужно перекомпилировать. Я пытаюсь идентифицировать #include
, которого можно избежать, например, используя предварительные объявления или не вставляя тривиальные функции в заголовки.
Есть ли способ узнать, из самого CMake, из сгенерированного Makefile или непосредственно из самих файлов, какие единицы зависят от каких заголовков?
Список будет приятным, визуальный график (graphviz?) еще приятнее. Google ничего не меняет. CMake имеет параметр --graphviz
, но он работает с целями, а не с отдельными единицами компиляции.
Что-то кросс-платформенное (т.е. использование только CMake) является предпочтительным, но я соглашусь и на Linux.