Makefile实战
1.新建main.c Makefile tool1.c tool1.h tool2.c tool2.h
main.c
#include <stdio.h>
#include “tool1.h”
#include “tool2.h”
int main(){
mytool1();
mytool2();
return 0;
}
tool1.c
#include <stdio.h>
#include “tool1.h”
void mytool1(void)
{
printf(“tool1 print\n”);
}
tool2.c
#include <stdio.h>
#include “tool2.h”
void mytool2(void)
{
printf(“tool2 print\n”);
}
tool1.h
void mytool1(void);
tool2.h
void mytool2(void);
- Makefile的两种写法
(1)
**# 自定义依赖关系,源文件(后缀为.c)经过编译汇编生成目标文件(后缀为.o)
# 目标文件执行生成可执行文件(类似与mytool)
mytool:main.o tool1.o tool2.o写gcc命令时候,前面要tab按键一下
不写-o参数,生成默认的可执行文件名为a.out,这里我们修改为mytool
gcc main.o tool1.o tool2.0 -o mytool
main.o:main.c
#-Wall 可以看到所有的警告
#-g 可以调试
#-c 只允许执行到汇编步骤,不允许链接。
gcc main.c -c -Wall -g -o main.o
tool1.o:tool1.c
gcc too1.c -c -Wall -g -o tool1.o
tool2.o:tool2.c
gcc tool2.c -c -Wall -g -o tool2.o
clean:
$(RM) *.o mytool -rf
(2)
# $^ 代替 上面的指令
# RM 代替 rm -f
# $@ 代替 目标文件
# %.o:%.c
# $(CC) $^ $(CFLAGS) -o $@
# 百分号相当于一个通配符
OBJS=main.o tool1.o tool2.o
CC=gcc
CFLAGS=-c -Wall -g
mytool:${OBJS}
$(CC) $(OBJS) -o mytool
%.o:%.c
$(CC) $^ ${CFLAGS} -o $@
clean:
$(RM) *.o mytool -rf