2010-07-08 25 views
16

Tengo un proyecto CMake C++ que está creciendo rápidamente y que a menudo está cambiando. Estoy tratando de reducir los tiempos de compilación al mínimo.¿Cómo generar dependencias de compilación desde CMake o make?

A menudo, cuando reconstruyo el proyecto, especialmente después de un cambio de encabezado, me sorprende la cantidad de unidades de compilación que deben recompilarse. Estoy tratando de identificar #include s que posiblemente se pueden evitar, por ejemplo mediante el uso de declaraciones previas o al no incluir funciones triviales en los encabezados.

¿Hay alguna forma de averiguar, desde CMake, desde el archivo Makefile generado, o directamente desde los archivos, qué unidades dependen de qué encabezados?

Una lista sería agradable, un gráfico visual (graphviz?) Aún más agradable. Google no encuentra nada para mí. CMake tiene la opción --graphviz, pero opera en objetivos, no en unidades de compilación individuales.

Se prefiere algo multiplataforma (es decir, usando solo CMake), pero también me conformaré con Linux.

Respuesta

9

Encontré la información de dependencia generada por cmake2.8 (después de ejecutar make) viviendo en los archivos depend.make y depend.internal, cuando uso una herramienta basada en gcc. El uso de VS no parece generar dichos archivos (pero esto no parece ser un problema para usted). También estos archivos son cmake internals, así que úsalas bajo tu responsabilidad.

+1

Este es solo el cierre transitivo (es decir, que incluye dependencias indirectas), pero es útil, ¡gracias! – Thomas

Cuestiones relacionadas