首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Autoconf使用中断的函数(ac_fn_set_status、ac_fn_exit)生成配置

Autoconf使用中断的函数(ac_fn_set_status、ac_fn_exit)生成配置
EN

Stack Overflow用户
提问于 2010-07-20 09:16:40
回答 3查看 1.4K关注 0票数 2

我正试着为我的项目建立自动控制系统。除了在./ ac_set_<...>中找不到函数之外,一切都“正常”工作。如果我直接运行,它们在configure.status中工作得很好。

具体来说,我在as_fn_set_status和as_fn_exit上遇到了麻烦。

如果我手动编辑配置文件并将这两个函数移动到配置脚本的顶部,那么一切都正常。

为了达到这一点,我:

configure.ac

  • ran
  1. 编写了-i
  2. ran ./配置

由此产生的行如下:

代码语言:javascript
复制
./configure: line 1366: as_fn_set_status: command not found

发生错误的有3-4行.

对于什么会产生这种效果,有什么想法吗?这是我的configure.ac:

代码语言:javascript
复制
##########################################
#  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
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-07-31 10:45:18

在AC_INIT之前,不能调用任何具有非空展开的宏。如果您将对AC_CANONICAL_SYSTEM的调用移到AC_INIT之后,您的问题就会消失。

票数 4
EN

Stack Overflow用户

发布于 2011-12-10 18:57:23

我遇到了一个令我抓狂的简单问题,并最终发现了这个问题:我试图编译一个较旧的项目,该项目提供了自己的M4宏。在包含的M4-文件中(在config子目录中),对AC_DEFFUN的调用提供了第三个参数。我不明白为什么这会造成这个问题,但去掉第三个论点会有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2010-07-23 15:53:20

您是否安装了不同的autoconf。我认为这个函数来自于m4宏:m4sugar/m4sh.m4。您可以检查该文件,以确定它是否具有该功能。

它应该看起来像:

代码语言:javascript
复制
[AS_REQUIRE_SHELL_FN([as_fn_set_status],
  [AS_FUNCTION_DESCRIBE([as_fn_set_status], [STATUS],
    [Set $? to STATUS, without forking.])], [  return $[]1])]dnl
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3288517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档