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

时间:2013-07-06 21:58:55

标签: makefile

我有一个编译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 for $(NAME)”)。

提前谢谢。

1 个答案:

答案 0 :(得分:2)

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

e.g。

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