0
TOUCHFILE=.touch
NM = meow
.PHONY: extract
extract: $(TOUCHFILE)
$(TOUCHFILE): $(ARCHIVE) Makefile
   ifeq ($(wildcard TOUCHFILE),)
   rm -rf $NM
   touch $(TOUCHFILE)
   else
       @echo "nice going";

上述工作不应该吗?当我第一次没有 .touch 时,它会删除目录并创建 .touch。下次我使用 extract 运行时,它应该回显正确吗?我看到每次 make 都会删除 meow 目录并执行其他操作。

4

1 回答 1

2

请注意,Make if-then-else 必须以 结尾endif,并且指令不能以 TAB 开头,因为它们不是命令。(另请注意,您的通配符表达式是错误的——它搜索“TOUCHFILE”,而不是“.touch”):

$(TOUCHFILE): $(ARCHIVE) Makefile
ifeq ($(wildcard $(TOUCHFILE)),)
    rm -rf $NM
    touch $(TOUCHFILE)
else
    @echo "nice going";
endif
于 2013-01-15T03:32:23.627 回答