2

我需要确定软件的主要版本,为此主要是执行

命令--版本 | 头| awk -F“。” '{打印 $1}'

现在,我需要将此输出分配给 AC_DEFINE 变量。

我试过了;

majorvar=$(command --version | head | awk -F "." '{print $1}')

AC_DEFINE_UNQUOTED([myVar],["$majorvar"],[description])

这里的“命令”出现在生成的 config.h 文件中

AC_DEFINE([myVar],0,[descr])

AC_SUBST([myVar],[$(command --version | head | awk -F "." '{print $1}')])

其中定义 (0) 设置的值出现在结果中。

是否有可能获得我想要的结果,即

#define myVar 5

还是我以错误的方式解决这个问题,如果是这样,我应该怎么做?

BR/帕特里克

4

1 回答 1

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 脚本。
于 2020-09-05T03:54:02.837 回答