EXTRA_CFLAGS的目的是什么?

时间:2015-01-09 14:21:39

标签: makefile compiler-flags

EXTRA_CFLAGS的用途是什么?

我在某些情况下会看到它,但我从未理解为什么人们不会在CFLAGS而不是EXTRA_CFLAGS附加旗帜。

我首先想到的是make如何定义其隐式规则,但事实并非如此。据我了解,make隐式规则中没有使用EXTRA_CFLAGS,对吗?

我很感激任何启蒙。

1 个答案:

答案 0 :(得分:10)

嗯,这不是标准制作或内置制作规则的任何部分,所以这只是你习惯使用的一些makefile的惯例。它作为一个单独的标志完成的原因是你可以在命令行上使用它:

make EXTRA_CFLAGS=-O3

命令行变量赋值覆盖 makefile中变量的任何设置,因此追加不起作用。那就是:

$ cat Makefile
CFLAGS += -Dfoo

all: ; @echo '$(CFLAGS)'

$ make CFLAGS=-Dbar
-Dbar

$ make CFLAGS+=-Dbar
-Dbar

两者都会显示-Dbar,而不是-Dfoo -Dbar

这就是为什么它是一个单独的旗帜。在automake环境中,它们显式保留CFLAGS以供用户在命令行上提供,所有“普通”标志都放入其他变量中。