EXTRA_CFLAGS的目的是什么?

Mar*_*son 7 makefile compiler-flags

它的用途是EXTRA_CFLAGS什么?

我在某些情况下看到它,但我永远不明白为什么人们不会只是附加旗帜CFLAGS而不是EXTRA_CFLAGS.

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

我很感激任何启蒙.

Mad*_*ist 10

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

make EXTRA_CFLAGS=-O3
Run Code Online (Sandbox Code Playgroud)

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

$ cat Makefile
CFLAGS += -Dfoo

all: ; @echo '$(CFLAGS)'

$ make CFLAGS=-Dbar
-Dbar

$ make CFLAGS+=-Dbar
-Dbar
Run Code Online (Sandbox Code Playgroud)

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

这就是为什么它是一个单独的旗帜.在automake环境中,它们明确地保留CFLAGS用户在命令行上提供,并且所有"正常"标志都放入其他变量中.