Linux中的make和makefile
前言
在软件工程中的源文件有很多,按照其功能,类型,模块分别放在若干个文件和目录中,哪些文件需要编译,哪些需要后编译,于是有了系统的编译工具。
在Linux和unxi中,使用make来管理多模块程序的编译和链接,生成可执行文件。
Makefile叫做编译规则说明文件。描述了整个软件工程的编译规则。
makefile就如一个shell脚本,可以执行操作系统命令,能够实现自动化编译。
make是一个解释Makefile中指令的命令工具。
一、Makefile的编写
makefile文件的规则可以很复杂,比C程序还要复杂,示例:
all :book1 book2
book:book1.c
gcc -o book1 book1.c
book2:book2.c
gcc -o book2 book2.c
clean:
rn -f book1 book2;
all是固定写法。
book1 book2表示要编译的程序清单,中间用空格分隔开,如果清单很长,用\换行
book1 book1.c:表示需要编译的目标程序。
当book1.c内容发生了变化,执行make的时候会重新编译book1.
gcc -o book1 book1.c
这是一个编译命令,(注意)gcc前的空格是tab键。
clean:清除目标文件,命令由:rem -f book1 book2.c执行,(tab)
二、make命令
Makefile准备好了后,执行make就可以编译makefile中的all指定目标文件。
make clean,执行清除目标文件的指令。
makefile文件中的变量
makefile中,变量就是一个名字,变量的值就是一个文本字符串。在makefile中的目标,依赖,命令或者其他地方引用变量时,变量会被它的值替代。CC=gcc
FLAG=-g
all:book1 book2
book1:book1.c
$(CC) $(FLAG) -o book1 book1.c
book2:book2.c
$(CC) $(FLAG) -o book2 book2.c
clean:
rm -f book1 book2
CC=gcc:定义变量CC,赋值gcc
FLAG=-g:定义变量CC,赋值-g
$(CC) $(FLAG) -o book1 book1.c