Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个主makefile,它具有变量的默认值,然后是一个包含项目特定设置的子makefile。在子 makefile 的末尾,我包含了主 makefile。
我一直在主 makefile 中使用以下代码来设置变量的默认值
ifndef CC CC = avr-gcc endif
然后最近我读到我也可以
CC ?= avr-gcc
所以我的问题是,两者是否相同,如果是,哪一种是推荐的覆盖变量的方法。
第二个被广泛理解,更容易阅读并且不会造成混乱。
第一种方式,ifndef / endif更多地用于您想要做的不仅仅是设置变量的实例,例如根据是否DEBUG设置切换许多事情,或其他事情。
ifndef / endif
DEBUG
如果您只想设置一个尚未设置的变量,那么绝对var ?= value足够了。
var ?= value