3

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

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

4

3 回答 3

4

你不使用是正确的CPPFLAGS。那是一个用户变量。我要做的是这样的:

在源目录的根目录中,创建一个名为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
于 2010-10-11T23:22:55.023 回答
1

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

于 2010-10-11T18:54:23.040 回答
0

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

GLOBAL_CPPFLAGS="-DSOMETHING"

...

CPPFLAGS="$CPPFLAGS $GLOBAL_CPPFLAGS"

你应该被设置。

于 2010-10-11T22:56:19.940 回答