我有一个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的源代码。如何做到这一点?
发布于 2016-06-27 01:40:42
您的clean规则不会删除文件zappy_server、zappy_ai和zappy_gui。这些文件是all的先决条件(而且all规则没有命令),所以当您第二次要求Make执行all规则时,Make告诉您没有什么可做的。
如果希望clean删除这些文件,请在clean食谱中添加一行:
rm $(ZAPPY_SERVER) $(ZAPPY_AI) $(ZAPPY_GUI)如果您不希望clean删除这些文件,但仍然希望Make重新生成这些文件,那么方法之一就是声明这些目标假的
.PHONY: $(ZAPPY_SERVER) $(ZAPPY_AI) $(ZAPPY_GUI)https://stackoverflow.com/questions/38038795
复制相似问题