如何拥有 Makefile,以便在调用 make 时,“make: '.test7' 是最新的”。是在屏幕上获得的吗?

问题描述 投票:0回答:1

这是我的 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 时获得相同的消息?

makefile gnu-make
1个回答
0
投票

从配方中删除

@:
-
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
- 它们默认就在那里。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.