如何执行shell命令,并将输出分配给configure.ac中的AC_DEFINE变量

时间:2014-12-04 12:57:34

标签: bash automake autoreconf

我需要识别软件的主要版本,要做到这一点主要是为了执行

  

命令--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 /帕特里克

1 个答案:

答案 0 :(得分: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

代码段定义:

  1. 名为VERSION的宏函数DEFUN
  2. 带有正则表达式的脚本变量,用于版本控制
  3. 包含宏AS_ECHO的脚本变量分配,该宏在配置脚本的生成过程中放置​​了VERSION脚本。