首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AC_DEFINE失败

AC_DEFINE失败
EN

Stack Overflow用户
提问于 2015-11-19 01:05:01
回答 2查看 1.7K关注 0票数 2

我正在尝试在autoconf/automake/autoheader中自动配置一个带有主次版本号和修订版本号的库。

为什么这些符号值会导致以下错误?

代码语言:javascript
复制
# Library Version Master Version DO NOT TOUCH
AC_DEFINE_UNQUOTED([MAJORVERSION], [0], [Library major version])
AC_DEFINE_UNQUOTED([MINORVERSION], [2], [Library minor version])
AC_DEFINE_UNQUOTED([REVISION], [0], [Library revision version])
AC_DEFINE_UNQUOTED([LIB_VER], [["$MAJORVERSION:$MINORVERSION:$REVISION"]], [Library complete version])
m4_esyscmd([echo $LIB_VER > .version])



autoreconf: running: /usr/bin/autoheader --force
configure.ac:30: warning: AC_DEFINE: not an identifier: 
configure.ac:31: warning: AC_DEFINE: not an identifier: 
configure.ac:32: warning: AC_DEFINE: not an identifier: 
configure.ac:33: warning: AC_DEFINE: not an identifier: 
autoheader: warning: missing template: 
autoheader: Use AC_DEFINE([], [], [Description])
autoreconf: /usr/bin/autoheader failed with exit status: 1

修复autoconf命令中的空格后,这是Makefile摘录。

代码语言:javascript
复制
 MAJORVERSION = 
MAKEINFO = ${SHELL} /home/dave/src/libringbuffers-0.2.0/missing makeinfo
MANIFEST_TOOL = :
MINORVERSION = 
MKDIR_P = /bin/mkdir -p
NM = /usr/bin/nm -B
NMEDIT = 
OBJDUMP = objdump
...
PACKAGE_NAME = libringbuffers
PACKAGE_STRING = libringbuffers 0.2.0-2-gd984062
PACKAGE_TARNAME = libringbuffers
PACKAGE_URL = 
PACKAGE_VERSION = 0.2.0-2-gd984062
...
REL_VER = 
REVISION = 
SED = /bin/sed

所以这可能是第一个问题,但仍然没有存储值...

EN

回答 2

Stack Overflow用户

发布于 2015-11-21 10:39:48

我相信你遇到的问题是由括号前AC_DEFINE_UNQUOTED后面的额外空格引起的。

尝试替换:

代码语言:javascript
复制
AC_DEFINE_UNQUOTED ([MAJORVERSION], [0], [Library major version])
AC_DEFINE_UNQUOTED ([MINORVERSION], [2], [Library minor version])
AC_DEFINE_UNQUOTED ([REVISION], [0], [Library revision version])
AC_DEFINE_UNQUOTED ([LIB_VER], [["$MAJORVERSION:$MINORVERSION:$REVISION"]], [Library complete version])

通过以下方式:

代码语言:javascript
复制
AC_DEFINE_UNQUOTED([MAJORVERSION], [0], [Library major version])
AC_DEFINE_UNQUOTED([MINORVERSION], [2], [Library minor version])
AC_DEFINE_UNQUOTED([REVISION], [0], [Library revision version])
AC_DEFINE_UNQUOTED([LIB_VER], [["$MAJORVERSION:$MINORVERSION:$REVISION"]], [Library complete version])

注意:AC_DEFINE_UNQUOTED后面不能有空格

票数 1
EN

Stack Overflow用户

发布于 2015-11-22 19:35:47

configure.ac中包含以下内容

代码语言:javascript
复制
AC_DEFUN([AX_DEFINE_SUBST], [
AC_DEFINE_UNQUOTED([$1], [$2], [$3])
AC_SUBST([$1], ['$2'])
])

AX_DEFINE_SUBST([MAJORVERSION], [0], [Library major version])
AX_DEFINE_SUBST([MINORVERSION], [2], [Library minor version])
AX_DEFINE_SUBST([REVISION], [0], [Library revision version])
AC_DEFINE_UNQUOTED([LIB_VER], [["$MAJORVERSION:$MINORVERSION:$REVISION"]], [Library complete version])

AC_CONFIG_HEADERS([config.h])

...

AC_OUTPUT

在运行autoreconf && ./configure之后,我在config.h中声明了以下内容

代码语言:javascript
复制
/* Library complete version */
#define LIB_VER "0:2:0"

/* Library major version */
#define MAJORVERSION 0

/* Library minor version */
#define MINORVERSION 2

/* Library revision version */
#define REVISION 0

注:来自:How do I combine AC_SUBST and AC_DEFINE?AX_DEFINE_SUBST黑客

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33786081

复制
相关文章

相似问题

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