with tutorial how examples example build-process doxygen

build-process - how - doxygen tutorial



¿Cómo hacer que doxygen funcione más rápido? (5)

De la documentación de Doxygen:

¿Cómo puedo excluir todos los directorios de prueba de mi árbol de directorios?

Simplemente coloque un patrón de exclusión como este en el archivo de configuración:

EXCLUDE_PATTERNS = / test /

Por lo tanto, debe usar patrones para excluir archivos. Ha pasado mucho tiempo desde que utilicé Doxygen, pero no recuerdo ninguna opción para procesar solo los archivos modificados.

Doxygen es un poco lento: toma aproximadamente un par de minutos procesar todo mi proyecto, por lo que para pequeños cambios incrementales esto es más largo que construir el resto de mi código. Hay miles de archivos sin documentación, así que supongo que está pasando la mayor parte del tiempo procesándolos. ¿Hay alguna forma de evitar que se salte archivos sin documentación?

¿Qué tal si solo procesa archivos modificados?


Doxygen es bueno para encontrar conexiones entre archivos, ya sea modificado o no. Pero Doxygen no recuerda información sobre archivos sin modificar, por lo que debe procesar toda la base de código cada vez.

Puede ser una solución sería organizar el proyecto de modo que los archivos nunca cambiados pertenezcan a un módulo que está excluido del alcance de Doxygen y cuya documentación ya está disponible. Entonces sería posible decirle a Doxygen que vincule la documentación recién compilada a la documentación de este módulo existente.

Yendo más lejos, también sería posible hacer que Doxygen ejecute el módulo por módulo, procesando únicamente los módulos modificados y una documentación de nivel superior que enlaza con todos los documentos del módulo.


Descubrí que desactivar la opción SEARCH_INCLUDES hizo una gran diferencia. Revisaba toda la plataforma SDK e incluía rutas para el compilador que, de todos modos, no estaban documentadas y no aparecían en la documentación generada.


Hay una DOT_NUM_THREADS opciones que pueden aumentar el rendimiento en máquinas multinúcleo. Lamentablemente, doxygen solo tiene un solo hilo.

Otro enfoque sería organizar su código en módulos ejecutados para cada módulo, una instancia doxygen separada y enlazar las etiquetas resultantes: http://www.stack.nl/~dimitri/doxygen/external.html


No creo que tener Doxygen en un ciclo de desarrollo normal sea una buena idea. Nuestra compilación de Doxygen se ejecuta como parte de las responsabilidades de nuestro servidor de integración continua.

Dicho esto, hay algunos beneficios de ejecutar doxygen cada compilación para capturar documentos faltantes. Así que recortaría la configuración de doxygen para compilaciones de desarrollo eliminando diagramas, e incluso dejaría de importar Apple en xcode.