是否有可能将缺失的依赖关系视为最新?

时间:2013-01-29 16:45:21

标签: makefile

如果我有一个Makefile,如下

server : network.o storage.o logic.o
    ld network.o storage.o logic.o -o server

network.o : network.c netdefs.h
    cc -c -o network.o network.c

storage.o : storage.c defs.h
    cc -c -o storage.o storage.c

logic.o : logic.c defs.h
    cc -c -o logic.o logic.c

.PHONY : promote clean reallyclean

promote : server
    cp server /staging/new_servers

clean : 
    rm -f *.o

reallyclean : clean
    rm -f server

我执行以下命令序列

make server # builds ther server from source
make clean  # tidies up the .o files
make promote # send the built server to the staging area

make并不奇怪,从头开始重新构建服务器,因为.o文件是服务器的依赖项并且缺失。

我确实希望如果服务器文件本身不在那里就会发生这种情况(否则没有什么可以促进)但是如果有服务器而没有.o文件那么我想让make假设服务器已启动 - 到目前为止并推广它。

这可以实现吗?

1 个答案:

答案 0 :(得分:0)

啊,明白了!

使用.SECONDARY或.INTERMEDIATE标记所有我想要忽略的中间体,例如添加:

.SECONDARY : network.o storage.o logic.o

(我曾经尝试过这些但是在我真正的解决方案中,我有一个被忽略的中间体依赖于一个不被忽略的中间体,所以make仍在重建所谓的被忽略的中间体,因此重建服务器。)