Makefile 自定義字尾規則


就其本身而言,make已經知道,為了建立一個 .o檔案,就必須使用 cc-c 相應的c檔案。 建成MAKE這些規則,可以利用這一點來縮短Makefile。如果僅僅只是表示 .h 檔案的 Makefile依賴線,依賴於目前的目標是,MAKE會知道,相應的檔案已規定。你甚至不需要編譯器包括命令。

這減少了我們的Makefile更多,如下所示:

OBJECTS = main.o hello.o factorial.o
hello: $(OBJECTS)
        cc $(OBJECTS) -o hello
hellp.o: functions.h
main.o: functions.h 
factorial.o: functions.h 

 

Make 使用一個特殊的目標,故名 .SUFFIXES允許你定義自己的字尾。例如,依賴線:

.SUFFIXES: .foo .bar
告訴make ,將使用這些特殊的字尾,以使自己的規則。

 

如何讓 make 已經知道如何從 .c 檔案生成 .o檔案。類似的可以定義規則以下列方式:

.foo.bar:
        tr '[A-Z][a-z]' '[N-Z][A-M][n-z][a-m]' < $< > $@
.c.o:
        $(CC) $(CFLAGS) -c $<

 

第一條規則允許你建立一個 .bar 檔案從 .foo檔案。 (不要擔心它做什麼,它基本上打亂檔案)第二條規則 .c檔案建立一個 .o 檔案中使用的預設規則。