Подтвердить что ты не робот

Как вывести зависимости компиляции из CMake или make?

У меня есть проект CMake С++, который быстро растет и часто меняется. Я пытаюсь сократить время компиляции до минимума.

Часто, когда я перестраиваю проект, особенно после изменения заголовка, я удивляюсь, сколько единиц компиляции нужно перекомпилировать. Я пытаюсь идентифицировать #include, которого можно избежать, например, используя предварительные объявления или не вставляя тривиальные функции в заголовки.

Есть ли способ узнать, из самого CMake, из сгенерированного Makefile или непосредственно из самих файлов, какие единицы зависят от каких заголовков?

Список будет приятным, визуальный график (graphviz?) еще приятнее. Google ничего не меняет. CMake имеет параметр --graphviz, но он работает с целями, а не с отдельными единицами компиляции.

Что-то кросс-платформенное (т.е. использование только CMake) является предпочтительным, но я соглашусь и на Linux.

4b9b3361

Ответ 1

Я нашел информацию о зависимостях, сгенерированную cmake2.8 (после запуска make), живущую в файлах depend.make и depend.internal, когда я использую toolchain на основе gcc. Использование VS не похоже на создание таких файлов (но это не кажется вам проблемой). Также эти файлы являются внутренними компонентами cmake, , поэтому используйте их на свой страх и риск.