带有 automake/autoconf 条件的 Makefile [英] Makefile conditional with automake/autoconf

查看:38
本文介绍了带有 automake/autoconf 条件的 Makefile的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

谁能告诉我是否有办法向 Makefile.am 插入条件块,以便将其进一步传递给由 autotools 创建的 Makfile?

can anybody tell me if there is a way to insert a conditional block to Makefile.am so that it will be passed further to a Makfile created by autotools?

这是一个例子:

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

这似乎是做有条件的事情的常见 Makefile 方式.Automake 切断 endif 行并最终失败并显示如下消息:

This seems to be a usual Makefile way of doing conditional things. Automake cuts endif line off and make fails eventually with a message like this:

Makefile:390:* 缺少endif".停止.

Makefile:390: * missing `endif'. Stop.

有什么想法吗?

推荐答案

因为它也被标记为 Autoconf,如果可能的话,我建议将条件放在 configure.ac 中.类似这样:

Since it's tagged as Autoconf also, I suggest putting the condition in configure.ac, if that is possible. Similar to so:

AM_CONDITIONAL([CONDITION_NAME], [test x"${SOMEVAR}" != x])

然后,你的 Makefile.am 将包含

Then, your Makefile.am would contain

if CONDITION_NAME
<conditional code>
else
<else :)>
endif

更新

问题与

python setup.py --root=$(DESTDIR) --prefix=$(DESTDIR)$(prefix)

从某处被调用.如果 DESTDIR 为空,前缀可能会扩展为相对路径,这不是您想要的.你已经确认它是从你的 Makefile.am 调用的.那么你可以做两件事.

being called from somewhere. If DESTDIR is empty, the prefix may expand to a relative path, which is not what you want. You have confirmed it is being called from your Makefile.am. Then there's two things you can do.

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

  1. Change the above command to python setup.py --root=${DESTDIR}/// --prefix=${DESTDIR}///$(prefix). Triple slashes may be necessary since, AFAIK, POSIX allows for double slashes to have a special meaning, but not for three or more consecutive slashes.

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

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

It may be noteworthy that, in my opinion and limited understanding of the whole picture, none of that should be necessary. Since the original caller of configure was able to specify exactly which prefix he really wanted to use. If none is specified, Autoconf already defaults to an absolute path (/usr/local). So, I guess, I don't quite understand why you run into your problem.

这篇关于带有 automake/autoconf 条件的 Makefile的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆