1

我有一个编译 2 个二进制文件的 makefile,并在每次编译以及所有编译完成时显示消息:

$(NAME):       $(NAME_S) $(NAME_C)
               @echo "\033[31mCompilation done!\033[0m"

$(NAME_S):     $(OBJS_S)
               @cc -o $(NAME_S) $(OBJS_S)
               @echo "\033[32mCompilation server done!\033[0m"

$(NAME_C):     $(OBJS_C)
               @cc -o $(NAME_C) $(OBJS_C)
               @echo "\033[32mCompilation client done!\033[0m"

我的问题是当两个二进制文件是“最新的”并且我发送一个 make 时,消息“编译完成!” 显示(这是正常的);但我想要由 makefile 本身生成的默认消息(“make:Nothing to be done for $(NAME)”)。

提前谢谢。

4

1 回答 1

2

一种方法是创建目标文件,因此 make 只会在其先决条件发生更改时尝试重新制作该目标。

例如

$(NAME):       $(NAME_S) $(NAME_C)
               @echo "\033[31mCompilation done!\033[0m"
               @touch $(NAME)
于 2013-07-06T23:22:18.033 回答