2011-12-19 16 views
10

Defino el número de versión de mi proyecto en un archivo de texto plano en lugar de configure.ac por algún motivo. Me gustaría crear una declaración que lea el número de versión y lo almacene durante el tiempo de compilación.Lea un número de versión de un archivo en configure.ac

Ahora mismo mi configure.ac se parece a esto:

AC_INIT([my program],[999.9.9]) 

me gustaría tener algo como:

AC_INIT([my program],[ $(cat VERSION) ]) 

Esto no trabajará por supuesto. ¿Cuál es el truco aquí? (Sé que estoy perdiendo algo de portabilidad, no me importa en este momento). ¡Gracias!

Respuesta

22

Probar:

AC_INIT([my program], m4_esyscmd([tr -d '\n' < VERSION])) 

Editado con correcciones sugeridas en los comentarios.

también fue capaz de eliminar la no portátil tr invocación usando:

AC_INIT([my program], [m4_translit(m4_esyscmd([cat VERSION]),m4_newline)]) 

que parece funcionar igual de bien, al igual que la solución sugerida por Enrico en los comentarios a continuación:

AC_INIT([my program], [m4_esyscmd_s([cat VERSION])]) 
+0

Got configure.ac:5: warning: AC_INIT: no literal: m4_esyscmd ([echo 9.9 | tr -d '\ n']) pero * funciona *! Gracias. – lzap

+4

@lzap: Puede eliminar las comillas de 'm4_esyscmd (...)' para que se evalúen antes de llamar a 'AC_INIT'. De esta forma 'AC_INIT' obtiene un literal. También eliminaría la invocación de 'cat', por eficiencia:' AC_INIT ([mi programa], m4_esyscmd ([tr -d '\ n' adl

+0

@adl Publique eso como respuesta y lo haré upvote it :) – legoscia

Cuestiones relacionadas