automake:修改implicity使规则包含额外的标志

时间:2010-10-11 17:21:43

标签: makefile autotools autoconf automake

如何添加适用于所有makefile的额外标志变量(如CPPFLAGS)?目前,我们正在使用CPPFLAGS,但应该将其保留为用户变量,我想保留它。我不想使用AM_CPPFLAGS,因为我想为特定的Makefile.amS保留它。我想要的是GLOBAL_CPPFLAGS,我可以在configure.ac中设置并将其应用于所有内容。如果有一种方法可以明确地忽略该标志,那也很好。

我认为我需要做的是编写自己的make规则,但是如果不将它复制到每个Makefile.am中,我将如何在所有子文件夹中使用它?

3 个答案:

答案 0 :(得分:4)

你没有使用CPPFLAGS是正确的。那是user variable。我要做的是这样的事情:

在源目录的根目录中,创建一个名为common.am的文件,并在其中定义您需要的内容:

## common.am
AM_CPPFLAGS = -DFOO

我知道你说你不想使用AM_CPPFLAGS,但是听我说。在您的各个子目录中,include $(top_srcdir)/common.am并根据需要扩展或覆盖AM_CPPFLAGS

## bar/Makefile.am
include $(top_srcdir)/common.am
AM_CPPFLAGS += -DBAR

如果您想覆盖,请使用=代替+=

## baz/Makefile.am
include $(top_srcdir)/common.am
AM_CPPFLAGS = -DBAZ

答案 1 :(得分:1)

我认为您回答了自己的问题:您必须将新规则复制到每个makefile中。

答案 2 :(得分:0)

CPPFLAGS是您可能应该使用的机制。只需在configure.ac中连接你想要的标志:

GLOBAL_CPPFLAGS = “ - DSOMETHING”

...

CPPFLAGS =“$ CPPFLAGS $ GLOBAL_CPPFLAGS”

你应该被设置。