在 automake 中使用条件
Posted
技术标签:
【中文标题】在 automake 中使用条件【英文标题】:Using conditionals in automake 【发布时间】:2010-07-08 20:50:25 【问题描述】:我最近从使用 Makefiles 切换到使用 Automake,但我不知道如何使用 automake 编写以下简单的 if 语句:
DEBUG ?= 1
ifeq ($DEBUG,1)
CXXFLAGS:=$(CXXFLAGS) -g
else
CXXFLAGS:=$(CXXFLAGS) -O3 -DNDEBUG
endif
如果我使用自动制作,这甚至可能吗?既然它会自动生成 makefile,那么在 Makefile 模板中编写它是否有意义?还是我应该尝试找到某种方法将其添加到自动生成的 Makefile 中?
【问题讨论】:
【参考方案1】:不,您不能在 Automake 中使用这样的语法。前两行没有完全等价的。
您可以使用 Automake 条件来做一些接近的事情(有关示例,请参阅 Automake 手册中的条件的使用),并从 ./configure
设置 DEBUG
。
但是我认为这样做没有什么意义:如果您想全局更改CXXFLAGS
,只需在configure
中更改此变量,而不是在Makefile.am
中。
【讨论】:
不要更改构建文件中的 CXXFLAGS。您的包的用户有权期望您不会设置 CXXFLAGS。如果您必须添加标志,请使用 AM_CXXFLAGS,但不要单独使用 CXXFLAGS,以便用户可以根据需要设置它们。以上是关于在 automake 中使用条件的主要内容,如果未能解决你的问题,请参考以下文章
如何设置 automake 和 autoconf 以有条件地构建程序(测试或其他)