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