使用變數簡化makefile檔
在我們的例子中,我們在‘edit’的生成規則中把所有的OBJ 檔列舉了兩次,這樣的兩次列舉有出錯的可能,例如在系統中加入一個新的OBJ 檔,我們很有可能在一個需要列舉的地方加入了,而在另外一個地方卻忘記了。我們使用變數可以簡化makefile檔並且排除這種出錯的可能。變數是定義一個字串一次,而能在多處替代該字串使用。
在 makefile檔中使用名為objects, OBJECTS, objs, OBJS, obj, 或 OBJ 的變數代表所有
OBJ檔已是約定成俗。在這個makefile檔我們定義了名為objects的變數,其定義格式如下:
objects = main.o kbd.o command.o display.o insert.o search.o files.o utils.o
然後,在每一個需要列舉OBJ檔的地方,我們使用寫為`$(objects)'形式的變數代替(具體內
容請閱讀使用變數一節)。下面是使用變數後的完整的makefile檔:
objects = main.o kbd.o command.o display.o \
insert.o search.o files.o utils.o
edit : $(objects)
cc -o edit $(objects)
main.o : main.c defs.h
cc -c main.c
kbd.o : kbd.c defs.h command.h
cc -c kbd.c
command.o : command.c defs.h command.h
cc -c command.c
display.o : display.c defs.h buffer.h
cc -c display.c
insert.o : insert.c defs.h buffer.h
cc -c insert.c
search.o : search.c defs.h buffer.h
cc -c search.c
files.o : files.c defs.h buffer.h command.h
cc -c files.c
utils.o : utils.c defs.h
cc -c utils.c
clean :
rm edit $(objects)