У меня есть makefile с этими правилами.Makefile Пропуск правила, хотя существует тип файла
all: $(TARGET)
OBJECTS = file.o
%.o: %.c
$(COMPILER) -c $(FLAGS) &< -o C_$(basename [email protected]).o
%.o: %.s
$(COMPILER) -c $(FLAGS) &< -o S_$(basename [email protected]).o
... The Linker is then called with *.o to link all the object files
У меня одинаковое имя файла file.c и file.s в каталоге src. Но make только запускает первое правило для объектного файла. Почему он только компилируется один раз? И как я могу заставить make скомпилировать файлы file.c и file.s, если они существуют в моей папке src?
Я не хочу создавать другое имя файла объекта для другого расширения. Это было бы глупо.
Есть ли способ для меня скомпилировать имя файла с расширением .s и .c?
Я чувствую, что сделать может легко сделать это, и я чего-то не хватает.
Благодарим за помощь. Если я не понимаю, скажите мне, и я попытаюсь объяснить это более подробно.
Это правило №4? Я думаю, у меня может быть отдельный файл filename.o для каждого файла. Это просто делает мой makefile невероятно большим и сложным для поддержания. Есть ли способ заставить makefile создать цель со всеми доступными правилами? –
@Bradleybare: Я не знаю, что * «отдельное имя файла.o для каждого файла» * означает. О какой цели вы говорите? Зачем вам нужно, чтобы Make создавал 'foo.o' с одним правилом, а затем перезаписывал его другим? – Beta
Не знаю. У меня просто есть файлы, называемые DMA2D.c и DMA2D.s, потому что я могу писать правила регистрации в asm, но материал более высокого уровня в c. Я хотел иметь возможность называть их обоих DMA2D, но с другим расширением. По отдельному имени файла. Я имею в виду DMA2D_S.o и DMA2D_C.o. –