Makefile不遵守默认值

时间:2020-08-31 02:10:35

标签: makefile gnu-make

我有一个GNU Makefile,在顶部设置了一些默认值。其中之一是

CC ?= gcc

后来,我有类似的食谱

file.o: file.c ...
    $(CC) -c $<

但是,在没有其他参数的情况下调用make会产生类似

的输出
cc -c file.c

为什么不遵守默认值“ gcc”,为什么还要插入其他值?如果有帮助,我在Mac上。

1 个答案:

答案 0 :(得分:1)

因为CC是GNU Make的内置变量,在读取makefile(至cc)之前会隐式设置,?=仅在未设置(未定义)的情况下设置变量。

尽管如此,您仍可以使用:=进行设置,但我认为这不是您想要的。

您可以运行带有选项--no-builtin-variables的make来阻止GNU Make设置内置变量。这将按您希望的方式工作,但是每次调用make时都需要使用该选项,而所有其他内置变量都需要由makefile显式定义。

相关问题