我有一个主makefile,它有变量的默认值,然后是一个包含项目特定设置的子makefile。在子makefile的末尾,我包含了主makefile。
我一直在master makefile中使用以下代码来设置变量的默认值
ifndef CC
CC = avr-gcc
endif
最近我读到我也可以
CC ?= avr-gcc
所以我的问题是,两者是否相同,如果是,推荐的覆盖变量的方法是哪一种。
答案 0 :(得分:3)
第二种是广泛理解,更容易阅读并且减少了混乱。
第一种方法,使用ifndef / endif
更多是针对您想要更多而不仅仅设置变量的实例,例如根据是否设置了DEBUG
来切换很多内容, 或者是其他东西。
如果您只想设置变量如果尚未设置,那么var ?= value
肯定就足够了。