linux高级编程六Makefile

来源:互联网 发布:php广告任务网源码 编辑:程序博客网 时间:2024/05/22 04:10
========================== Makefile ======================
1.GNU推出的一款软件


2.在project文件中,在命令行下输入make,操作系统会自动寻找当前目录的下的makefile,按照makefile规则去编译project下的相关文件




3.基本形式:
main:main.o fun1.o fun.o                                                            gcc main.o fun1.o fun.o -o main
  main.o:main.c
      gcc -c main.c -o main.o
  fun1.o:fun1.c
      gcc -c fun1.c -o fun1.o
  fun.o:fun.c
      gcc -c fun.c -o fun.o




4.makefile变量
OBJS = main.o add.o 
OBJ = main
CC = gcc
使用变量用$(OBJS)
$(OBJS)
$(CC)


5.自动变量
$@ 目标文件的完整名称
$< 第一个依赖文件的名称
$^ 所有的不重复的目标依赖文件,以空格隔开
方式一:
CC=gcc
CFLAGS=-O2 -Wall
OBJ=main
OBJS=main.o fun1.o fun.o


$(OBJ):$(OBJS)
$(CC) $(OBJS) -o $(OBJ)
main:main.o fun1.o fun.o
gcc main.o fun1.o fun.o -o main
main.o:main.c
gcc -c main.c -o main.o
fun1.o:fun1.c
gcc -c fun1.c -o fun1.o
fun.o:fun.c
gcc -c fun.c -o fun.o


.PHONY:
clean:
rm *.o main




方式二:
CC=gcc
CFLAGS=-O2 -Wall
OBJ=main
OBJS=main.o fun1.o fun.o


$(OBJ):$(OBJS)
$(CC) $(OBJS) -o $(OBJ)
main.o:main.c
$(CC) -c $< -o $@
fun1.o:fun1.c
$(CC) -c $< -o $@
fun.o:fun.c
$(CC) -c $< -o $@


.PHONY:
clean:
rm *.o main




方式三:
CC=gcc
CFLAGS=-O2 -Wall
OBJ=main
OBJS=main.o fun1.o fun.o


$(OBJ):$(OBJS)
$(CC) $(OBJS) -o $(OBJ)
%.o:%.c
$(CC) -c $^ -o $@
























0 0
原创粉丝点击