Makefile以automake / autoconf为条件

时间:2010-11-23 13:45:08

标签: python conditional autoconf automake

有人可以告诉我是否有办法向Makefile.am插入一个条件块,以便它可以进一步传递给autotools创建的Makfile?

以下是一个例子:

ifeq "$(SOMEVAR)" ""
SOMEVAR="default_value"
endif

这似乎是一种常见的Makefile方式来做条件事情。 Automake会关闭endif线,最终会出现如下消息:

Makefile:390: * 缺少`endif'。停止。

有什么想法吗?

1 个答案:

答案 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调用它。然后你可以做两件事。

  1. 将上述命令更改为python setup.py --root=${DESTDIR}/// --prefix=${DESTDIR}///$(prefix)。可能需要三斜线,因为AFAIK,POSIX允许双斜线具有特殊含义,但不能用于三个或更多连续斜杠。

  2. 将上述命令更改为DESTDIR=${DESTDIR:-///} && python setup.py --root=${DESTDIR} --prefix=${DESTDIR}$(prefix)

  3. 值得注意的是,在我看来,对整体情况的理解有限,这些都不应该是必要的。由于configure的原始调用者能够准确指定他真正想要使用的prefix。如果未指定,则Autoconf已默认为绝对路径(/usr/local)。所以,我想,我不太明白为什么你会遇到你的问题。