调用其他Makefile重新链接的Makefile,我该如何修复它?

时间:2016-06-26 13:07:34

标签: makefile

我有这个Makefile:

ZAPPY_SERVER    = zappy_server

ZAPPY_AI    = zappy_ai

ZAPPY_GUI   = zappy_gui

all:    $(ZAPPY_SERVER) $(ZAPPY_AI) $(ZAPPY_GUI)

    $(ZAPPY_SERVER):
        make -C server/ && cp server/zappy_server .

    $(ZAPPY_AI):
        make -C client/ && cp client/zappy_ai .

    $(ZAPPY_GUI):
        make -C gui/ && cp gui/zappy_gui .

    clean:
        make clean -C server/
        make clean -C client/
        make clean -C gui/

    fclean:
        make fclean -C server/ && rm $(ZAPPY_SERVER)
        make fclean -C gui/ && rm $(ZAPPY_GUI)
        make fclean -C client/ && rm $(ZAPPY_AI)

但是,当我拨打make然后make clean然后make时,它会重新链接:

make: Nothing to be done for 'all'.

我想再次编译其他Makefiles的来源。想法怎么做?

1 个答案:

答案 0 :(得分:1)

您的clean规则不会删除文件zappy_serverzappy_aizappy_gui。这些文件是all的先决条件(并且all规则没有命令),因此第二次请求Make执行all规则时,Make会告诉您没有任何内容要做。

如果您希望clean删除这些文件,请在clean食谱中添加一行:

rm $(ZAPPY_SERVER) $(ZAPPY_AI) $(ZAPPY_GUI)

如果希望clean删除这些文件,但您仍希望Make重建它们,一种方法是通过声明这些目标PHONY

.PHONY: $(ZAPPY_SERVER) $(ZAPPY_AI) $(ZAPPY_GUI)