讀書心得 跟我一起寫 makefile (3-1) makefile 介紹

本文出自 跟我一起寫 makefile-陳皓(2005)

Chp3. makefile 介紹


之前看的 GNU make 那本開始看不懂了,只好看點別的書相互補一下了,通常我要看懂某個東西都是要把很多文件參在一起看才行...


makefile 的規則:

target ... : prerequisites ...  
    command  
  • target 也就是一個目標,可以是 Object File,也可以是執行檔。還可以是一個 標籤(Label)。
  • prerequisites 就是,要生成那個 target 所需要的文件或是目標。
  • command 也就是 make 需要执行的命令。(任意的 Shell 命令)

一個不是很好的例子:

CC = gcc

edit: main.o kbd.o command.o display.o insert.o search.o files.o utils.o  
    $(CC) -o edit main.o kbd.o command.o display.o insert.o search.o files.o utils.o  
  
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 main.o kbd.o command.o display.o insert.o search.o files.o utils.o  

在我們編譯過程中,我們修改了其中一個 source code,比如 file.c,根據我們的相依性,我們的目標 file.o 會被重新編譯(也就是執行這個相依關係 後面所定義的命令)。指令執行完後 file.o 的文件就會被更新,然後 file.o 的文件修改時間要比 edit 新,所以 edit 也會重新鏈結。

留言

熱門文章