为什么GNU会认为目标总是过时了?

时间:2015-09-03 21:59:37

标签: makefile gnu-make

这是preeny的Makefile:

COMMON_DEPS=logging.c
PLATFORM?=

all: desock.so defork.so dealarm.so patch.so derand.so desrand.so deptrace.so desock_dup.so

desock.so: desock.c $(COMMON_DEPS)
    bash build_so.sh $@ $(PLATFORM) $^ -lpthread

desock_dup.so: desock_dup.c $(COMMON_DEPS)
    bash build_so.sh $@ $(PLATFORM) $^ -ldl

defork.so: defork.c $(COMMON_DEPS)
    bash build_so.sh $@ $(PLATFORM) $^

dealarm.so: dealarm.c $(COMMON_DEPS)
    bash build_so.sh $@ $(PLATFORM) $^

derand.so: derand.c $(COMMON_DEPS)
    bash build_so.sh $@ $(PLATFORM) $^

desrand.so: desrand.c $(COMMON_DEPS)
    bash build_so.sh $@ $(PLATFORM) $^ -ldl

deptrace.so: deptrace.c $(COMMON_DEPS)
    bash build_so.sh $@ $(PLATFORM) $^

patch.so: patch.c $(COMMON_DEPS)
    bash build_so.sh $@ $(PLATFORM) $^ -lini_config

clean:
    rm -f *.o
    rm -f *.so

出于某种原因,即使我没有对源文件进行任何更改,每次调用make时都会重建所有.so文件。那是为什么?

来源:https://github.com/zardus/preeny/blob/b5d8b9/src/Makefile

1 个答案:

答案 0 :(得分:1)

这是因为目标不存在。结果立即转移到../$ARCH,目标提到当前目录。