2011-12-19 16 views
10

Definisco il mio numero di versione del progetto in un file di testo normale anziché configure.ac per alcuni motivi. Vorrei creare una dichiarazione che legga il numero di versione e lo memorizzi durante la compilazione.Leggere un numero di versione da un file in configure.ac

questo momento il mio configure.ac assomiglia a questo:

AC_INIT([my program],[999.9.9]) 

Mi piacerebbe avere qualcosa di simile:

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

Questo non funzionerà naturalmente. Qual è il trucco qui? (So ​​che sto perdendo qualche portabilità - non mi interessa al momento). Grazie!

risposta

22

Prova:

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

cura con correzioni suggerite nei commenti.

Sono stato anche in grado di rimuovere il non-portatile tr invocazione utilizzando:

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

che sembra funzionare altrettanto bene, così come la soluzione suggerita da Enrico nei commenti qui sotto:

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

Ottenuto configure.ac:5: attenzione: AC_INIT: non un letterale: m4_esyscmd ([echo 9.9 | tr -d '\ n']) ma * funziona *! Grazie. – lzap

+4

@lzap: puoi rimuovere le virgolette attorno a 'm4_esyscmd (...)' in modo che venga valutato prima di chiamare 'AC_INIT'. In questo modo 'AC_INIT' ottiene un valore letterale. Vorrei anche rimuovere l'invocazione di 'cat', per efficienza:' AC_INIT ([mio programma], m4_esyscmd ([tr -d '\ n' adl

+0

@adl Post che come risposta e io upvotalo :) – legoscia

Problemi correlati