2010-03-01 21 views
18

¿Es posible documentar los preprocesadores definidos en Doxygen? Esperaba poder hacerlo como una variable o función, sin embargo, la salida de Doxygen parece haber "perdido" la documentación para la definición, y tampoco contiene la definición.La documentación del preprocesador se define en Doxygen

Probé la

/**My Preprocessor Macro.*/ 
#define TEST_DEFINE(x) (x*x) 

y

/**@def TEST_DEFINE 

    My Preprocessor Macro. 
*/ 
#define TEST_DEFINE(x) (x*x) 

También probé ponerlos dentro de un grupo (defgroup tratado, AñadirAGrupo y grupo interno) y no sólo en el "ámbito de archivo", sin embargo después de que tampoco tuvo ningún efecto (aunque otros artículos en el grupo se documentaron como se pretendía).

Miré a través de las diversas opciones de Doxygen, pero no pude ver nada que permitiera (o evitara) la documentación de define.

Respuesta

25

Sí, es posible. El Doxygen documentation dice:

Para documentar los objetos globales (funciones, typedefs, enumeración, macros, etc.), debe documentar el archivo en el que se definen. En otras palabras, debe al menos ser un

/** @file */

línea

/*! \file */

o en este archivo.

Puede utilizar @defgroup, @addtogroup y @ingroup se incluyen los elementos relacionados en el mismo módulo, incluso si aparecen en archivos separados (véase la documentación here para más detalles). He aquí un ejemplo mínimo que funciona para mí (usando Doxygen 1.6.3):

Doxyfile:

# Empty file. 

Test.h:

/** @file */ 

/**My Preprocessor Macro.*/ 
#define TEST_DEFINE(x) (x*x) 

/** 
* @defgroup TEST_GROUP Test Group 
* 
* @{ 
*/ 

/** Test AAA documentation. */ 
#define TEST_AAA (1) 
/** Test BBB documentation. */ 
#define TEST_BBB (2) 
/** Test CCC documentation. */ 
#define TEST_CCC (3) 
/** @} */ 

foo.h:

/** @file */ 

/** 
* @addtogroup TEST_GROUP 
* 
* @{ 
*/ 

/** @brief My Class. */  
class Foo { 
    public: 
     void method(); 
}; 

/** @} */ 

Bar.h:

/** @file */ 

/** 
* @ingroup TEST_GROUP 
* My Function. 
*/ 
void Bar(); 

En este caso, la documentación TEST_DEFINE aparece en la prueba.h entrada bajo la pestañaarchivos en la salida HTML, y las definiciones etc. TEST_AAA aparecen bajo Grupo de prueba en los módulos pestaña junto con la clase y la función FooBar.

Una cosa a tener en cuenta es que si se pone el nombre del archivo después de la @file de comandos, por ejemplo:

/** @file Test.h */ 

entonces este debe coincidir con el nombre real del archivo. De lo contrario, no se generará la documentación de los elementos en el archivo.

Una solución alternativa, si no desea agregar comandos @file, es establecer EXTRACT_ALL = YES en su archivo Doxy.

Espero que esto ayude!

+0

¿Eso significa que no hay forma de ponerlos en un grupo/módulo? Eso es lo que realmente trato de hacer para que estén junto con las funciones/clases/etc. con las que están relacionadas (también se extienden por varios archivos). –

+0

Hola Fire Lancer, he agregado algunos detalles sobre la agrupación a mi respuesta – ChrisN

+0

Ok, lo tengo para trabajar en un addtogroup o defgroup block. ingroup parece perder la definición en alguna parte (defgroup está en un .cpp con los documentos principales del grupo, y todo excepto el define en el encabezado se pone bien en el grupo) ... Supongo que debe haber algún tipo de error en la parte Doxygens? –

2

Intenta configurar la opción EXTRACT_ALL, tengo ese conjunto en mi proyecto y genera documentación para #defines. Puede haber una forma más elegante de hacerlo sin utilizar EXTRACT_ALL así que asegúrese de comprobar la documentación

http://www.doxygen.nl/config.html#cfg_extract_all

3

En mis archivos "C", que utiliza un formato de comentario y la línea # define así:

/** @brief Number of milli-seconds to wait*/ 
#define kTimeoutMSec (2) 

Mis documentos HTML no terminan con documentación que especifique. (Tengo archivo @ en la parte superior del archivo y EXTRACT_ALL = SÍ)

0

Agregando a las respuestas anteriores, también es necesario tener ENABLE_PREPROCESSING=YES en el archivo Doxy.

Cuestiones relacionadas