这是我的 Makefile:
NAME = .test7
$(NAME):
@echo Making $(NAME)...
@touch $(NAME)
@echo Done.
all: $(NAME)
@:
clean fclean:
rm -r $(NAME)
re: fclean all
@:
.PHONY: all clean fclean re
如果我第一次运行 make,将显示以下输出:
Making .test7...
Done.
如果我第二次运行 make,则不会显示任何内容。 如果然后,我运行 make .test7,我将收到预期的消息:
make: '.test7' is up to date.
这是预期的,因为 .test7 文件已经制作完成。
但是,我正在寻找一种方法,在调用 make 或 make all 时获得相同的消息?
从配方中删除
@:
- all
目标中的此操作会阻止打印标准报告“make: Nothing to be do for 'all'”。
@:
是一个空命令,但它仍然是一个命令。目标all
正在确保所有先决条件都准备就绪后尝试执行此操作。
作为替代方案,您可以将
echo Done
移至 all
:
$(NAME):
@echo Making $(NAME)...
@touch $(NAME)
all: $(NAME)
@echo Done.
那么你将永远“完成”。
make
末尾的消息:
$ make
Making .test7...
Done.
$ make
Done.
此外,无需将
all
和 clean
放入 .PHONY
- 它们默认就在那里。