2

我有一个主makefile,它具有变量的默认值,然后是一个包含项目特定设置的子makefile。在子 makefile 的末尾,我包含了主 makefile。

我一直在主 makefile 中使用以下代码来设置变量的默认值

ifndef CC
    CC = avr-gcc
endif

然后最近我读到我也可以

CC ?= avr-gcc

所以我的问题是,两者是否相同,如果是,哪一种是推荐的覆盖变量的方法。

4

1 回答 1

3

第二个被广泛理解,更容易阅读并且不会造成混乱。

第一种方式,ifndef / endif更多地用于您想要做的不仅仅是设置变量的实例例如根据是否DEBUG设置切换许多事情,或其他事情。

如果您只想设置一个尚未设置的变量,那么绝对var ?= value足够了。

于 2013-09-18T10:25:15.840 回答