Makefile ifeq($(foo),)和ifndef foo之间有什么区别
根据,这两种情况的评估结果似乎相同,那么它们之间有什么区别呢Makefile ifeq($(foo),)和ifndef foo之间有什么区别,makefile,gnu-make,Makefile,Gnu Make,根据,这两种情况的评估结果似乎相同,那么它们之间有什么区别呢 ifeq ($(foo),) execute somethings endif 及 ifdef/ifndef不展开变量 显示不同行为的示例: bar = foo = $(bar) ifndef foo $(info yes) else $(info no) endif ifeq ($(foo),) $(info yes) else $(info no) endif 输出: no yes 第一个看到值“$(bar)”并
ifeq ($(foo),)
execute somethings
endif
及
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中的变量,使其变为“”并通过。引用手册:“注意,ifdef只测试变量是否有值。它不会扩展变量以查看该值是否为非空。”注意,
ifndefo…
与ifeq(,$(value foo))…
非常类似。当--warn undefined variables
生效时,双方都不会抱怨。
no
yes