检查是否进行了编译(Makefile)

检查是否进行了编译(Makefile),makefile,Makefile,我有一个makefile,它可以编译2个二进制文件,并在完成所有编译时显示每次编译的消息: $(NAME): $(NAME_S) $(NAME_C) @echo "\033[31mCompilation done!\033[0m" $(NAME_S): $(OBJS_S) @cc -o $(NAME_S) $(OBJS_S) @echo "\033[32mCompilation ser

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

$(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:NothingtoBefor$(NAME)”)


提前感谢。

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

e、 g


您已经为
$(NAME)
定义了一个规则,因此“对$(NAME)”没有任何操作是不正确的。如果两次编译(在my.c上)之间没有更改,则makefile会放置此消息(如果我删除了第一个回显,则会有)。那么“不再进行编译”如何?
$(NAME):       $(NAME_S) $(NAME_C)
               @echo "\033[31mCompilation done!\033[0m"
               @touch $(NAME)