我想检查规则中文件的大小,但仅限于文件存在的情况。 check_size是一个自定义函数。在下面,make甚至不会调用check_size:
$(if $(test -f $(file)),\
@$(call check_size,$(shell stat -f%z $(file),$(size)))
我不知道出了什么问题。任何帮助将不胜感激。
谢谢, -Vj
答案 0 :(得分:1)
没有make函数test
,因此$(test -f $(file))
会导致make尝试扩展名为test -f $(file)
的make变量,这显然不存在,因此它扩展为空字符串。
因此,if-condition始终为false(在make if
函数和其他条件中,空字符串为false且非空字符串为true)且then子句未展开。
在食谱中使用像这样的make函数并让它们做你想做的事情实际上有点棘手,而且我也无法弄清楚call
在这里做了什么:为什么你是否将$(file),$(size)
传递给shell中的stat
程序?但由于没有关于check_size
的信息,我们必须认为这是必要的。
在这种情况下,你必须使用真正的制作功能;您要用来测试文件是否存在的那个是wildcard
,如果文件存在,它将扩展为文件名,如果不存在,则扩展为空字符串......所以:
$(if $(wildcard $(file)), \
@$(call check_size,$(shell stat -f%z $(file),$(size)))