使用變數簡化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)

results matching ""

    No results matching ""