Makefile
a.c代码:
#include<stdio.h>
int main(void)
{
func_b();
return 0;
}
b.c代码:
#include<stdio.h>
void func_b()
{
printf("This is B.c\n");
}
为什么引入Makefile?
gcc -o test a.c b.c
优点:简单
缺点: 对所有文件进行处理,即便只改变其中一个文件都会对所有文件进行编译链接处理。
建议:应该对每个文件分别处理。
gcc -c -o a.o a.c
gcc -c -o b.o b.c
gcc -o test a.o b.o
新问题:如何判断哪些文件被修改?
解决方法:
比较a.o 和a.c的文件修改时间
比较b.o 和b.c的文件修改时间
比较test和a.o b.o的文件修改时间
此便是makefile的做法
makefile如何编写?
makefile语法:
目标文件:依赖文件
tab 命令
解释:当依赖比目标新执行命令 tab是指一个tab缩进键
编写Makefile
test : a.o b.o
gcc -o test a.o b.o
a.o : a.c
gcc -c -o a.o a.c
b.o : b.c
gcc -c -o b.o b.c
执行make结果:
修改a.c b.c可以看到:
发现编译了a.c和b.c
若只改变a.c可以看到:
只编译了a.c