aut*_*fer 5 python automake autoconf conditional
谁能告诉我是否有办法向 Makefile.am 插入条件块,以便将其进一步传递给由 autotools 创建的 Makfile?
下面是一个例子:
ifeq "$(SOMEVAR)" ""
SOMEVAR="default_value"
endif
Run Code Online (Sandbox Code Playgroud)
这似乎是做有条件的事情的常见 Makefile 方式。Automake 切断 endif 行并最终失败并显示如下消息:
Makefile:390: *缺少‘endif’。停止。
有什么想法吗?
由于它也被标记为 Autoconf,因此如果可能的话,我建议将条件放入 configure.ac 中。类似于这样:
AM_CONDITIONAL([CONDITION_NAME], [test x"${SOMEVAR}" != x])
Run Code Online (Sandbox Code Playgroud)
然后,你的 Makefile.am 将包含
if CONDITION_NAME
<conditional code>
else
<else :)>
endif
Run Code Online (Sandbox Code Playgroud)
问题与
python setup.py --root=$(DESTDIR) --prefix=$(DESTDIR)$(prefix)
Run Code Online (Sandbox Code Playgroud)
被从某处呼叫。如果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
)。所以,我想,我不太明白为什么你会遇到问题。
归档时间: |
|
查看次数: |
1944 次 |
最近记录: |