考虑以下 Makefile:
MAKEFLAGS += --warn-undefined-variables
define foobar
echo "$(1)"
endef
.PHONY: all
all:
$(foobar)
Run Code Online (Sandbox Code Playgroud)
有没有办法让宏带有默认参数而不产生未定义的变量警告?我的意思是:有时我会用参数调用“foobar”,但有时不会。在后一种情况下,我希望为 $(1) 设置一个默认值。
您无法在宏中设置默认值,但可以在扩展参数时轻松添加一个:
1:=
define foobar
echo "$(if $1,$1,default)"
endef
all:
$(foobar)
$(call foobar,biz)
$ make
echo "default"
default
echo "biz"
biz
Run Code Online (Sandbox Code Playgroud)
如果多次使用该参数会有点烦人,因为if每次使用都必须使用 。
GNU make 语法非常有限;它不是一种成熟的编程语言,因此缺少很多东西,例如 make 宏中的默认参数。
但shell是一种编程语言!为什么不在目标的命令中实现您的要求呢?可能可以使用这样的东西:
all:
if test "$(SOMECONDITION)"; then \
do_one_thing; \
else \
do_something_else; \
fi
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1140 次 |
| 最近记录: |