gpt4 book ai didi

makefile - Autoreconf 停止并显示 "non-POSIX variable name"

转载 作者:行者123 更新时间:2023-12-02 19:16:09 24 4
gpt4 key购买 nike

我创建了一个 Makefile.in,在其中读取文件内容并将其传递给 CFLAGS。调用 ./configure ... 将生成 Makefile,一切正常。

Makefile.in: 
...
MY_REVISION_FILE=my-revision.txt
MY_REVISION=$(shell cat $(top_srcdir)/$(MY_REVISION_FILE))
AM_CFLAGS = -I$(EXTRAS_INCLUDE_DIR) -I$(top_srcdir) -DMY_REVISION=$(MY_REVISION)
...

当我将 Makefile.in 代码移至 Makefile.am 以允许自动生成 Makefile.in 时,问题就出现了。调用 autoreconf -i --force 停止并出现以下错误:

server/Makefile.am:9: cat $(top_srcdir: non-POSIX variable name 
server/Makefile.am:9: (probably a GNU make extension)
autoreconf: automake failed with exit status: 1

这个问题困扰我已经有一段时间了。我到处搜索,但没有找到任何可以帮助我找到解决方案的东西。简而言之,我唯一需要的是一种获取未解释文本的方法,例如从 Makefile.am 复制到 Makefile.in 的“$(shell cat $(top_srcdir)/$(MY_REVISION_FILE))”

有什么想法吗?

谢谢,奥利弗

最佳答案

正如它所说,问题是您在 Makefile.am 中使用了 GNUism,而它只是为了包含可移植的 Makefile 代码。

重写您的代码以使其可移植(您应该使用AM_CPPFLAGS,因为您将标志传递给预处理器,而不是编译器):

AM_CPPFLAGS = -I$(EXTRAS_INCLUDE_DIR) -I$(top_srcdir) -DMY_REVISION=`cat $(top_srcdir)/$(MY_REVISION_FILE)`

如果您不想在每次编译时调用 cat,您可以在 configure.ac 中找到该值以及 AC_SUBST 它到 MakefileAC_DEFINE 中,以便它进入 config.h

或者,如果您想要不可移植(ಠ_ಠ),您可以从 AM_INIT_AUTOMAKEAUTOMAKE_OPTIONS 中取出 -Werror,或者添加-Wno-portability

关于makefile - Autoreconf 停止并显示 "non-POSIX variable name",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15711824/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com