我有一個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
我在src目錄中具有相同的文件名file.c和file.s。但make只運行對象文件的第一條規則。爲什麼只編譯一次?我怎樣才能make編譯file.c和file.s,如果它們存在於我的src文件夾中的話?
我不想爲不同的擴展名創建不同的目標文件名。那會很愚蠢。
有沒有辦法讓我編譯擴展名爲.s和.c的文件名?
我覺得make很容易做到這一點,我錯過了一些東西。
謝謝你的幫助。如果我不清楚,請告訴我,我會嘗試更深入地解釋它。
是否規則#4?我想我可以有一個單獨的filename.o爲每個文件。它只是讓我的makefile難以置信地龐大而難以維護。無論如何強制makefile使用所有可用規則構建目標? –
@Bradleybare:我不知道什麼*「每個文件都有一個單獨的filename.o」*表示。你在說什麼目標?你爲什麼要讓Make用一個規則構建'foo.o',然後用另一個規則覆蓋它? – Beta
我不知道。我只有一個名爲DMA2D.c和DMA2D.s的文件,因爲我可以在asm中編寫寄存器規則,但在c中編寫更高級別的東西。我希望能夠將它們都稱爲DMA2D,但具有不同的擴展名。由單獨的filename.o我的意思是DMA2D_S.o和DMA2D_C.o。 –