有人可以告诉我是否有办法向Makefile.am插入一个条件块,以便它可以进一步传递给autotools创建的Makfile?
以下是一个例子:
ifeq "$(SOMEVAR)" ""
SOMEVAR="default_value"
endif
这似乎是一种常见的Makefile方式来做条件事情。 Automake会关闭endif线,最终会出现如下消息:
Makefile:390: * 缺少`endif'。停止。
有什么想法吗?
答案 0 :(得分:3)
由于它也被标记为Autoconf,我建议将条件放在configure.ac中,如果可能的话。与此类似:
AM_CONDITIONAL([CONDITION_NAME], [test x"${SOMEVAR}" != x])
然后,您的Makefile.am将包含
if CONDITION_NAME
<conditional code>
else
<else :)>
endif
问题与
有关python setup.py --root=$(DESTDIR) --prefix=$(DESTDIR)$(prefix)
从某个地方打电话。如果DESTDIR
为空,则前缀可能会扩展为相对路径,这不是您想要的。您已确认从Makefile.am调用它。然后你可以做两件事。
将上述命令更改为python setup.py --root=${DESTDIR}/// --prefix=${DESTDIR}///$(prefix)
。可能需要三斜线,因为AFAIK,POSIX允许双斜线具有特殊含义,但不能用于三个或更多连续斜杠。
将上述命令更改为DESTDIR=${DESTDIR:-///} && python setup.py --root=${DESTDIR} --prefix=${DESTDIR}$(prefix)
值得注意的是,在我看来,对整体情况的理解有限,这些都不应该是必要的。由于configure
的原始调用者能够准确指定他真正想要使用的prefix
。如果未指定,则Autoconf已默认为绝对路径(/usr/local
)。所以,我想,我不太明白为什么你会遇到你的问题。