2010-04-23 8 views
13

Tengo un proyecto GCC y me gustaría agregar automáticamente las definiciones para la fecha de compilación y el número de revisión (de git) a mis fuentes. ¿Cuál es la mejor manera de hacer esto?¿Cómo agrego revisión y fecha de compilación a la fuente?

Mi objetivo es simple para ser capaz de hacer algo como esto en el arranque:

printf("Test app build on %s, revision %d", BUILD_DATE, REVISION) 

Para la construcción que estoy usando hace con un simple Makefile.inc, no autoconf ni nada de esto.

Respuesta

7

Terminé usando un comando simple como esto en mi Makefile:

echo "#define GIT_REF \"`git show-ref refs/heads/master | cut -d " " -f 1 | cut -c 31-40`\"" > git_ref.h 
4

La sustitución de palabra clave RCS no es compatible nativamente con Git, pero se puede agregar con un controlador de filtro gitattributes: Consulte "Git equivalent of subversion's $URL$ keyword expansion".

alt text

Por ejemplo (no exactamente se refieren a su pregunta, pero ilustra el principio general):

git config filter.rcs-keyword.clean 'perl -pe "s/\\\$Date[^\\\$]*\\\$/\\\$Date\\\$/"' 
git config filter.rcs-keyword.smudge 'perl -pe "s/\\\$Date[^\\\$]*\\\$/\\\$Date: `date`\\\$/"' 

que basará su secuencia de comandos de filtro sobre el resultado de git describe --tags llamada desde su Makefile . this answer a "Git equivalente a $ URL $ expansión de palabras clave de subversión", el controlador de filtro difuminar/borrar no es una solución perfecta y agregar cualquier tipo de metadatos directamente en los datos (fuente) es generally a bad idea (tienes un debate al respecto en "What are the basic clearcase concepts every developer should know?").

Sin embargo, tiene un buen ejemplo de dicha expansión de palabras clave Git en this answer en "¿Cómo habilito la cadena de identificación para repositorios Git?".

Cuestiones relacionadas