为什么我在autoconf中遇到以下语法错误?

时间:2017-06-16 15:50:28

标签: autoconf

我在autoconf中有以下行:

AX_CHECK_COMPILE_FLAG([-std=c++0x], [CXXFLAGS="$CXXFLAGS -std=c++0x"], AC_MSG_ERROR([Need C++11 support]))

aclocal,autoconf和automake -a -c顺利进行。

但是,当我运行configure时,我收到错误:

./configure: line 2142: syntax error near unexpected token `-std=c++0x,'
./configure: line 2142: `AX_CHECK_COMPILE_FLAG(-std=c++0x, CXXFLAGS="$CXXFLAGS -std=c++0x", as_fn_error $? "Need C++11 support" "$LINENO" 5)'

任何想法为什么?

编辑:这似乎与其他问题不同,因为

   AX_CHECK_COMPILE_FLAG(-std=c++0x)

本身就有效......

编辑:

这是一个完整的configure.ac

# initial information about the project
AC_INIT([myproject],[0.1],[project@gmail.com])

# check if the source folder is available
AC_CONFIG_SRCDIR([src/main.cpp])

# check for C++ preprocessor and compiler
CXXFLAGS="$CXXFLAGS -std=c++0x"
CXXFLAGS="$CXXFLAGS -O3"

AX_CHECK_COMPILE_FLAG([-std=c++0x], [CXXFLAGS="$CXXFLAGS -std=c++0x"], AC_MSG_ERROR([Need C++11 support]))

AC_PROG_CXXCPP
AC_PROG_CXX

AC_PROG_CC

# automake initialization (mandatory) including a check for automake API version >= 1.9
AM_INIT_AUTOMAKE([1.9])


# use the C++ compiler for the following checks
AC_LANG([C++])

# Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS([string])
AC_CHECK_HEADERS([iostream])

# Checks for typedefs, structures, and compiler characteristics.
AC_TYPE_SIZE_T

# distribute additional compiler and linker flags among Makefiles
# --> set and change these variables instead of CXXFLAGS or LDFLAGS (for user only)
AC_SUBST([AM_CXXFLAGS])
AC_SUBST([AM_LDFLAGS])

# files to generate via autotools (prepare .am or .in source files)
AC_CONFIG_FILES([Makefile])
AC_CONFIG_FILES([src/Makefile])

# finally this generates the Makefiles etc. for the build
AC_OUTPUT

1 个答案:

答案 0 :(得分:0)

这似乎不太可能与您的autoconf搜索语料库中定义的AX_CHECK_COMPILE_FLAG不一样,您甚至不会在{{1}中找到对它的引用文件根本没有。

但是,你给出的第二个例子前面还有多个空格,这表明你可能在条件块中有这个,或者跟随另一个宏或条件块。 configure文件中的任何其他未定义的宏可能会导致autoconf以文字形式发出宏,而不是按照您的预期扩展它。我建议你发布一个完整的,缩小的configure.ac来显示行为,而不仅仅是一行。