makefile 基本结构
GNU Make 的主要工作是读一个文本文件 makefile 。 makefile 是用 bash 语言写的, bash 语言是很像 BASIC 语言的一种命令解释语言。这个文件里主要描述了有关哪些目标文件是从哪些依赖文件中产生的,是用何种命令来进行这个产生过程的。有了这些信息, make 会检查磁盘的文件,如果目标文件的日期 ( 即该文件生成或最后修改的日期 ) 至少比它的一个依赖文件日期早的话, make 就会执行相应的命令,以更新目标文件。
makefile 一般被称为 “makefile” 或 “Makefile” 。还可以在 make 的命令行中指定别的文件名。如果没有特别指定的话, make 就会寻找 “makefile” 或 “Makefile” ,所以为了简单起见,建议读者使用这两名字。如果要使用其他文件作为 makefile ,则可利用类似下面的 make 命令选项指定 makefile 文件:
$ make -f makefilename
一个 makefile 主要含有一系列的规则,如下:
目标文件名: 依赖文件名
(tab 键 ) 命令
第一行称之为规则,第二行是执行规则的命令,必须要以 tab 键开始。
下面举一个简单的 makefile 的例子。
executable : main.o io.o
gcc main.o io.o -o executable
main.o : main.c
gcc -Wall -O -g -c main.c -o main.o
io.o : io.c
gcc -Wall -O -g -c io.c -o io.o