根据this link,似乎这两种情况都会被评估为相同的结果,那么它们之间有什么区别呢?
ifeq ($(foo),)
execute somethings
endif
和
ifndef foo
execute somethings
endif
答案 0 :(得分:3)
ifdef / ifndef不扩展变量。
显示不同行为的示例:
bar =
foo = $(bar)
ifndef foo
$(info yes)
else
$(info no)
endif
ifeq ($(foo),)
$(info yes)
else
$(info no)
endif
输出:
no
yes
第一个看到值“$(bar)”并失败。第二个扩展了foo中的变量,因此变为“”并且它会通过。