如果在 AS_IF 中为真,您如何执行多个操作?

han*_*zer 2 pkg-config autotools

所以,我正在努力将一个非常古老的configure.in变成现代的configure.ac,但我遇到了一些绊脚石。

我试图AS_IF根据PKG_CHECK_MODULESand的结果使用语句来做 1-3 件事AC_ARG_ENABLE,但我似乎无法将它们强制到AS_IFaction-if-true 插槽中。

我目前的设置如下:

# Check for libbar
PKG_CHECK_MODULES([BAR],[bar],[bar_found=yes],[bar_found=no])
AC_ARG_ENABLE([bar],
    AS_HELP_STRING([--enable-bar],[enable support for bar [default=yes]]))
AS_IF([test x$enable_bar = xyes],
    [AS_IF(
        [test x$bar_found = xyes],
        [AC_DEFINE([HAVE_BAR_SUPPORT],[1],[Define if bar support is enabled])],
        [AC_MSG_ERROR([*** bar requested but not found ***])])
    ]
)
AS_IF([test x$enable_bar = xyes],
    [AS_IF(
        [test x$bar_found = xyes],
        [AX_APPEND_LINK_FLAGS([$BAR_LIBS],[LDFLAGS])],
        [AC_MSG_ERROR([*** bar requested but not found ***])])
    ]
)
AS_IF([test x$enable_bar = xyes],
    [AS_IF(
        [test x$bar_found = xyes],
        [AX_APPEND_COMPILE_FLAGS([$BAR_CFLAGS],[CFLAGS])],
        [AC_MSG_ERROR([*** bar requested but not found ***])])
    ]
)
Run Code Online (Sandbox Code Playgroud)

如您所见,它有效,但过于冗长。我希望能够在一个单一的情况下处理所有 action-if-true 的东西AS_IF

Die*_*enò 5

AS_IF 只是一个扩展 if ...; then ...; else ...; fi

所以你可以根据需要在块中添加尽可能多的代码,只要它们都用换行符分隔:

AS_IF([test x$enable_bar = xyes], [
  AS_IF([test x$xbar_found], [
    AC_DEFINE(...)
    AX_APPEND_LINK_FLAGS(...)
    AX_APPEND_COMPILE_FLAGS(...)
  ], [
    AC_MSG_ERROR(...)
])
Run Code Online (Sandbox Code Playgroud)