2011-12-19 1 views
10

Я определяю номер своей версии проекта в текстовом файле вместо configure.ac по некоторым причинам. Я хотел бы создать инструкцию, которая будет читать номер версии и хранить ее во время компиляции.Прочитайте номер версии из файла в файле configure.ac

Сейчас мой configure.ac выглядит следующим образом:

AC_INIT([my program],[999.9.9]) 

Я хотел бы иметь что-то вроде:

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

это не будет работать, конечно. Что это за трюк? (Я знаю, что теряю некоторую мобильность - на данный момент меня это не волнует). Благодаря!

ответ

22

Try:

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

редакцией с исправлениями, предложенными в комментариях.

Я также был в состоянии удалить непортабельному tr вызова с помощью:

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

, который, кажется, работает так же хорошо, как это делает решение, предложенное Enrico в комментариях ниже:

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

Got configure.ac:5: warning: AC_INIT: не литерал: m4_esyscmd ([echo 9.9 | tr -d '\ n']), но * он работает *! Благодарю. – lzap

+4

@lzap: вы можете удалить цитаты вокруг 'm4_esyscmd (...)' так, чтобы они были оценены до вызова 'AC_INIT'. Таким образом, 'AC_INIT' получает литерал. Я также удалил бы вызов 'cat', для эффективности:' AC_INIT ([моя программа], m4_esyscmd ([tr -d '\ n' adl

+0

@adl Опубликовать это как ответ, и я upvote it :) – legoscia

 Смежные вопросы

  • Нет связанных вопросов^_^