Павел Швед прав (*), вы должны перезапустить Make. Вот трюк, которым я горжусь. Он будет обрабатывать зависимости от объектов, которые могут еще не существовать, и не будет запускаться без необходимости.
SOURCES = $(wildcard *.c)
OBJECTS = $(SOURCES:.c=.o)
all: libmystuff.a
ifeq ($(MAKELEVEL),0)
libmystuff.a: source.txt
mycompiler $^
@$(MAKE) -s $@
else
libmystuff.a: $(OBJECTS)
$(AR) rcs $@ $^
endif
(*) Мой старый враг, мы снова встретимся.
EDIT:
Если некоторые другие звонят , это делает ... Я не думал об этом. Но я думаю, что это решит это:
SOURCES = $(wildcard *.c)
OBJECTS = $(SOURCES:.c=.o)
all: libmystuff.a
libmystuff.a: source.txt
mycompiler $^
@$(MAKE) -s phonyLib
.PHONY: phonyLib
phonyLib: $(OBJECTS)
$(AR) rcs libmystuff.a $^
(Да, я знаю, если вы испытываете желание создать файл с именем "phonyLib", вы не сможете сделать это с этим make-файлом, но давайте не будем извращаться.)