Tengo un código base en C++, documentado con doxygen y compilado con GNU make. Información de la versión que está centralizado en el Makefile, en el que tengo algo así como:Expandir macro dentro de doxygen comentario para imprimir la versión del software
VERSION = 1.2.3.4
En mi makefile, las CFLAGS añadir la siguiente definición:
CFLAGS + = -DAPP_VERSION = $ (VERSIÓN)
Esto me permite obtener la versión en código, así:
#define STR_EXPAND(tok) #tok
#define STR(tok) STR_EXPAND(tok)
int main()
{
cout << "software version is << STR(APP_VERSION) << endl;
}
Ahora, lo que me gustaría es tener esto en los archivos html doxygen producidos:
versión actual del software es 1.2.3.4
he conseguido exportar el variable de makefile en el archivo de configuración doxygen con: (editar: doxygen se llama desde makefile, a través de un objetivo 'hacer-doc')
PREDEFINIDAS = APP_VERSION = $ (VERSIÓN)
Pero entonces, si lo intento en el doxygen \ comando MainPage algo como esto, se produce un error, debido a que (por supuesto), los nombres de macro no conseguir ampliada en los comentarios ...
/**
\mainpage this is the doc
Current version is $(APP_VERSION) -- or -- ... is APP_VERSION
*/
Preguntas
¿conoce una forma de "expandir" esa macro en los comentarios doxygen? Esto podría hacerse mediante algún procesamiento de sed en el archivo que contiene el comentario en el archivo MAKE, pero quizás esto se puede resolver directamente con doxygen?
¿Cómo manejan el manejo de versiones otros proyectos (además de la herramienta automática de versiones que proporciona VCS), de forma que el ID de la versión está definido exclusivamente en un archivo, por lo que puede ser obtenido tanto por el sistema de compilación del software y la documentación sistema de construcción.
relacionadas: How to display a defined value
Vuelvo a esta pregunta y me doy cuenta (con algo de retraso ...) de que esto es exactamente lo que estaba buscando! No lo hago de manera que no lo haya detectado en ese momento. Aceptando la respuesta. – kebs