覆盖makefile变量

时间:2013-09-18 10:19:26

标签: makefile gnu-make

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

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

ifndef CC
    CC = avr-gcc
endif

最近我读到我也可以

CC ?= avr-gcc

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

1 个答案:

答案 0 :(得分:3)

第二种是广泛理解,更容易阅读并且减少了混乱。

第一种方法,使用ifndef / endif更多是针对您想要更多而不仅仅设置变量的实例,例如根据是否设置了DEBUG来切换很多内容, 或者是其他东西。

如果您只想设置变量如果尚未设置,那么var ?= value肯定就足够了。