写简单的makefile,对多文件进行编译,Make有完善机制对整个项目源代码进行编译
db:dboperation.o testdboperation.o
gcc -o db dboperation.o testdboperation.o -ldb
dboperation.o:dboperation.c
gcc -c dboperation.c
testdboperation.o:testdboperation.c
gcc -c testdboperation.c
clean:
rm dboperation.o
rm testdboperation.o
rm db
Makefile具有隐含规则将相应的xx.c源文件编译成目标文件xx.o,所以makefile可写成
db:dboperation.o testdboperation.o
gcc -o db dboperation.o testdboperation.o -ldb
clean:
rm dboperation.o
rm testdboperation.o
rm db
利用变量
CC=gcc
CFLAGS=-o
OBJFLAGS=-c
db:dboperation.o testdboperation.o
$(CC) $(CFLAGS) $@ $^ -ldb
dboperation.o:dboperation.c
$(CC) $(OBJFLAGS) $<
testdboperation.o:testdboperation.c
$(CC) $(OBJFLAGS) $<
clean:
rm dboperation.o
rm testdboperation.o
rm db
下面我们学习Makefile是如何编写的.
在Makefile中也#开始的行都是注释行.Makefile中最重要的是描述文件的依赖关系的说明.一般的格式是:
target: components
TAB rule
第一行表示的是依赖关系.第二行是规则.
比如Makefile文件
main:main.o mytool1.o mytool2.o
表示我们的目标(target)main的依赖对象(components)是main.o mytool1.o mytool2.o 当倚赖的对象在目标修改后修改的话,就要去执行规则一行所指定的命令.就象我们的上面那个Makefile第三行所说的一样要执行 gcc -o main main.o mytool1.o mytool2.o 注意规则一行中的TAB表示那里是一个TAB键
Makefile有三个非常有用的变量.分别是$@,$^,$<代表的意义分别是:
$@--目标文件,$^--所有的依赖文件,$<--第一个依赖文件.
阅读(1245) | 评论(0) | 转发(0) |