2014-02-18 1397 views
1

這是我目前的版本是什麼樣子:如何在makefile中編寫通用命令?

CC = gcc 
CFLAGS = `sdl-config --cflags` 
LIBS = `sdl-config --libs` -lSDL_ttf 

program: uprising 

uprising: main.o init.o display.o move.o global.o control.o battle.o 
    $(CC) main.o init.o display.o move.o global.o control.o battle.o -o uprising $(CFLAGS) $(LIBS) 

global.o: global.c 
    $(CC) -c global.c -o global.o $(CFLAGS) 

battle.o: battle.c 
    $(CC) -c battle.c -o battle.o $(CFLAGS) 

main.o: main.c 
    $(CC) -c main.c -o main.o $(CFLAGS) 

init.o: init.c 
    $(CC) -c init.c -o init.o $(CFLAGS) 

display.o: display.c 
    $(CC) -c display.c -o display.o $(CFLAGS) 

move.o: move.c 
    $(CC) -c move.c -o move.o $(CFLAGS) 

control.o: control.c 
    $(CC) -c control.c -o control.o $(CFLAGS) 
clean: 
    rm -f *~ *# uprising init.o main.o display.o move.o global.o control.o 

你看,每個模塊都被以同樣的方式進行編譯。在向項目添加新模塊時,我已經厭倦了編輯此生成文件。有沒有什麼辦法只輸入一次模塊的名字(就好像它是一個參數),讓makefile以同樣的方式構建每個模塊?

回答

0

如果更改LIBSLDLIBS,你可以在短短這個寫入整個生成文件:

CC = gcc 
CFLAGS = `sdl-config --cflags` 
LDLIBS = `sdl-config --libs` -lSDL_ttf 

program: uprising 

uprising: main.o init.o display.o move.o global.o control.o battle.o 
     $(CC) $^ -o [email protected] $(CFLAGS) $(LDLIBS) 

clean: 
     rm -f *~ *# uprising *.o 
+0

這是驚人的,謝謝! – Diaz