讀書心得 跟我一起寫 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 也會重新鏈結。
留言
張貼留言