Makefile conditional with automake/autoconf(使用 automake/autoconf 条件生成文件)
问题描述
谁能告诉我是否有办法向 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.
将上述命令改为
python setup.py --root=${DESTDIR}///--prefix=${DESTDIR}///$(prefix)
.三斜线可能是必要的,因为 AFAIK,POSIX 允许双斜线具有特殊含义,但不允许三个或更多连续斜线.
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:-//
本文标题为:使用 automake/autoconf 条件生成文件
基础教程推荐
- Dask.array.套用_沿_轴:由于额外的元素([1]),使用dask.array的每一行作为另一个函数的输入失败 2022-01-01
- 如何让 python 脚本监听来自另一个脚本的输入 2022-01-01
- 筛选NumPy数组 2022-01-01
- 使用PyInstaller后在Windows中打开可执行文件时出错 2022-01-01
- 线程时出现 msgbox 错误,GUI 块 2022-01-01
- 何时使用 os.name、sys.platform 或 platform.system? 2022-01-01
- 用于分类数据的跳跃记号标签 2022-01-01
- 如何在海运重新绘制中自定义标题和y标签 2022-01-01
- 在 Python 中,如果我在一个“with"中返回.块,文件还会关闭吗? 2022-01-01
- Python kivy 入口点 inflateRest2 无法定位 libpng16-16.dll 2022-01-01