我正在尝试为我的项目设置autoconf。除了ac_set_< ...>之外,我还能正常工作。在./configure中找不到函数。如果我直接运行它们,它们在configure.status中工作正常。
具体来说,我遇到了as_fn_set_status和as_fn_exit的问题。
如果我手动编辑配置文件并将两个函数移到配置脚本的顶部,一切正常。
为了达到这一点,我:
结果行如下:
./configure: line 1366: as_fn_set_status: command not found
有3-4行发生错误。
关于可能产生这种影响的任何想法?这是我的configure.ac:
##########################################
# Autoconf Configuration File for RPDB #
##########################################
# RPDB: An Object-Oriented Wrapper for Oracle's Berkeley Database (BDB/libdb),
# which is available at: http://www.oracle.com/technology/software/products/berkeley-db/index.html
###########################
# Init Autoconf >= 2.61 #
###########################
AC_CANONICAL_SYSTEM
AC_PREREQ(2.61)
AC_INIT([rpdb], [0.1.0], [asher@ridiculouspower.com])
AC_CONFIG_AUX_DIR([.])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_FILES([Makefile])
AC_CONFIG_HEADERS([config.h])
AM_INIT_AUTOMAKE
#################################
# Check for Library Functions #
#################################
AC_FUNC_ERROR_AT_LINE
AC_FUNC_MALLOC
AC_CHECK_FUNCS([strdup])
################################
# Check for Working Compiler #
################################
AC_PROG_CC
AC_PROG_RANLIB
#########################
# Check for Libraries #
#########################
AC_SEARCH_LIBS([db_create], [db], [have_libdb=yes])
#######################
# "Root Sourcefile" #
#######################
# "Root Sourcefile" is only used nominally to specify base path
AC_CONFIG_SRCDIR([src/RPDB_Base/RPDB.h])
#######################
# Check for Headers #
#######################
AC_HEADER_STDC
AC_CHECK_HEADERS([stdlib.h string.h])
# If we found libdb then check for db.h - we need to have both or we throw an error
if test "x${have_libdb}" = xyes; then
AC_CHECK_HEADERS([db.h], [], [have_libdb=no])
fi
if test "x${have_libdb}" = xno; then
echo "------------------------------------------"
echo " Oracle's Berkeley Database (libdb) "
echo " library and header file is required to "
echo " build RPDB. Stopping... "
echo " Check 'config.log' for more information. "
echo "------------------------------------------"
(exit 1); exit 1;
fi
#####################################################
# Check For Type-Related Compiler Characteristics #
#####################################################
AC_C_CONST
AC_HEADER_STDBOOL
AC_TYPE_INT32_T
AC_TYPE_PID_T
AC_TYPE_SIZE_T
AC_TYPE_UINT32_T
AC_TYPE_UINT64_T
AC_TYPE_UINT8_T
###############################
# Generate Configure Script #
###############################
AC_OUTPUT
答案 0 :(得分:4)
您无法在AC_INIT之前调用任何具有非空扩展的宏。如果将AC_CANONICAL_SYSTEM的调用移到AC_INIT之后,则问题应该消失。
答案 1 :(得分:1)
我有一个类似的问题让我发疯并最终发现了问题: 我试图编译一个提供自己的m4宏的旧项目。在包含的m4文件中(在config子目录中),已经调用了提供第三个参数的AC_DEFFUN。 我不明白为什么这会引起这个问题但是拿走第三个论点有帮助。
答案 2 :(得分:0)