Makefile.am中变量的错误扩展
我被一个奇怪的变量展开所困扰。让我解释一下 我有一个使用automake的项目,由Makefile.am中变量的错误扩展,makefile,automake,variable-expansion,brace-expansion,Makefile,Automake,Variable Expansion,Brace Expansion,我被一个奇怪的变量展开所困扰。让我解释一下 我有一个使用automake的项目,由configure.ac,Makefile.am组成。 基本上,在Makefile.am中,我正在做: ARCH = $(shell ${CURDIR}/./arch.sh) ... noinst_HEADERS = license/${ARCH}/lchecker.h proj_SOURCES = main.c license/${ARCH}/lchecker.c proj_LDFLAGS = -avoid-ve
configure.ac
,Makefile.am
组成。
基本上,在Makefile.am
中,我正在做:
ARCH = $(shell ${CURDIR}/./arch.sh)
...
noinst_HEADERS = license/${ARCH}/lchecker.h
proj_SOURCES = main.c license/${ARCH}/lchecker.c
proj_LDFLAGS = -avoid-version -Llicense/${ARCH}
./arch正在执行uname-m
以确定所需的体系结构,因为我必须输入正确的目录
运行生成时,出现以下错误:
Makefile:622: license/x86_64/.deps/lchecker.Po: No such file or directory
make[1]: *** No rule to make target 'license/x86_64/.deps/lchecker.Po'. Stop.
如果我进入license
目录,我会注意到创建了一个名为${ARCH}/
的新目录,在那里我从license/x86\u 64
中找到了缺少的.deps
我很确定这是一个不正确的扩展问题;我试过很多方法,但都失败了
有人能给我解释一下正确的方法吗?在网上阅读,我发现Makefile.am
的语法与Makefile
不同
更新:
我尝试添加一些更改以查看变量的定义是否正确:
AC_定义([ARCH]、“$ARCH”]、[ARCH检查])
echo ARCH=“$ARCH”
printfx86\u 64
因此,中的变量在configure.ac中定义,但在Makefile.am中的扩展不正确。在
configure.ac
中,使用宏
要在每个生成的makefile中创建make变量varname
,将
具有生成makefile时计算的value
值。
值
可以是外壳扩展。例如
AC_SUBST(ARCH,[`./arch.sh`])
在configure.ac
中,将在每个makefile中创建分配:
ARCH = x86_64
假设x86_64
是/arch.sh
在/configure
时间的标准输出
在构建目录中。然后,您可以假设此变量是这样分配的
在您的Makefile.am
中,编写以下内容:
noinst_HEADERS = license/${ARCH}/lchecker.h
我完全按照你的建议做了,但我得到了同样的结果:(@Kyrol之后你重新生成生成系统了吗?-
make distclean;autoeconf;/configure;make
。是的。我有一个脚本/build.sh
,可以这样做:autoeconf--force--install
automake--add missing
autoconf
。即使我放了make distclean
,结果也是一样的。@Kyrol在这种情况下,我认为真正的问题在你的帖子中并不明显。最好提供一个。autoeconf
已经调用了automake
和autoconf
(这就是autoeconf
的目的),所以你的build.sh
只需调用autoreconf
@Mike你删除了你的答案吗?是的。如果它不起作用,我想你需要一个。如果有帮助,我可以取消删除它。嗯,实际上我修改了我的代码并使用了你的,因为你的代码当然比我的好。无论如何,我会听从你的建议,希望我能解决:)