Как выполнить команду оболочки и назначить вывод переменной AC_DEFINE в файле configure.ac
Мне нужно определить основную версию программного обеспечения, чтобы сделать это главным образом для выполнения
команда --version | голова | awk -F "." '{print $1}'
Теперь мне нужно присвоить этот вывод переменной AC_DEFINE.
Я пробовал;
majorvar = $ (команда --version | head | awk -F "." '{print $1}')
AC_DEFINE_UNQUOTED ([MYVAR],["$majorvar"],[далее])
здесь "команда" появилась в результирующем файле config.h
а также
AC_DEFINE([MyVar],0,[DESCR])
AC_SUBST ([myVar], [$ (команда --version | head | awk -F "." '{Print $1}')])
где значение, установленное define (0), появляется в результате.
Можно ли получить желаемый результат, т.е.
#define myVar 5
или я поступаю неправильно, и если да, то как мне поступить?
BR / Patrik
0 ответов
Мне понадобилось несколько месяцев, чтобы осмыслить концепцию макросов. Как видно из названия, макросы "больше", чем скрипты. Надеюсь, этот пример поможет.
AC_DEFUN([VERSION],
[$(test -f $srcdir/VERSION && cat $srcdir/VERSION || AS_ECHO(["$PACKAGE_VERSION"]); )])
am_stable_version_rx='[[1-9]\.[0-9]+(\.[0-9]+)?]'
am_beta_version_rx="[$am_stable_version_rx[bdfhjlnprtvxz]]"
am_release_type=`AS_ECHO(["$VERSION"]) | LC_ALL=C awk ["
/^$am_stable_version_rx$/ { print \"stable\"; exit(0); }
/^$am_beta_version_rx$/ { print \"beta version\"; exit(0); }
{ print \"development snapshot\"; }"]`
test "$am_release_type" = stable || cat <<EOF
WARNING: You are about to use a $am_release_type of AC_PACKAGE_NAME VERSION.
WARNING: It might easily suffer from new bugs or regressions.
WARNING: You are strongly advised not to use it in production code.
Please report bugs, problems and feedback to <AC_PACKAGE_BUGREPORT>.
EOF
Фрагмент кода определяет:
- макрос функция DEFUN с именем VERSION
- переменная сценария с регулярным выражением для управления версиями
- назначение переменной сценария, содержащее макрос AS_ECHO, который помещает сценарий VERSION во время генерации сценария конфигурации.