2012-01-17 7 views
5

Tengo un programa en C++ que se ejecuta en un sistema integrado. Cuando el cliente encuentra un problema, me envía un archivo de registro. Y sería genial ver exactamente cuándo se construyó el binario en el registro. Por lo tanto, actualmente utilizo este sencillo pero muy eficaz método:¿Cómo implemento una funcionalidad similar a linux/proc/version en un programa de C++?

...

const std::string APP_BUILD = "2012.01.17.18:28"; 

int main() 
{ 
    std::cout << "Was built: " << APP_BUILT << std::endl; 
} 

Lo que me gustaría hacer es fijar APP_BUILD automáticamente durante la compilación. Sé que Linux tiene una variable/proc/version que se puede leer para determinar el tiempo de compilación. Mis lecturas

cat /proc/version 
Linux version 2.6.38-13-generic ([email protected]) (gcc version 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4)) #53-Ubuntu SMP Mon Nov 28 19:33:45 UTC 2011 

¿Se puede hacer esto? (Estoy construyendo mi aplicación en Linux).

+1

Compruebe las [macros predefinidas] de GCC (http://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html), algunos datos que desea se encuentran allí. –

+0

Si está utilizando algún sistema de control de versiones (y debería), probablemente también desee insertar una cadena que identifique de manera única la versión en particular. –

+0

Sí, estoy usando Mercurial. ¿Hay una manera de hacer eso? –

Respuesta

9

Parece que está buscando las macros __DATE__ y __TIME__. Estas macros estándar están disponibles tanto en C como en C++.

Véase, por ejemplo, el gcc manual.

+0

¡Gracias! Totalmente me olvidé de eso. –

Cuestiones relacionadas