在linux下面下写程序少不了写makefile,如果每个文件都按部就班的详细的写编译脚本,效率势必低下;makefile提供了自动化变量、模式规则等,稍加利用可以提高写makefile的效率。下面列举一个简单通用的makefile书写规则:
- SRCS = $(wildcard *.c)
- OBJS = $(SRCS:.c = .o)
- CC = gcc
- INCLUDES = -I/usr/your_path/include
- LIBS = -L/usr/your_path/lib
- CCFLAGS = -g -Wall -O0
- yourApp : $(OBJS)
- $(CC) $^ -o $@ $(INCLUDES) $(LIBS)
- %.o : %.c
- $(CC) -c $< $(CCFLAGS)
- clean:
- rm -rf OBJS
L1:$(wildcard *.c)将把当前目录下面的下面的以.c结尾的文件名展开,即SRCS这个变量的值就是这个当前目录下面的所有.c文件的文件名所组成的串,文件名间用空格分割;
L2:.c替换为.o后的串;
L3――L6:变量的定义;
L9:$^――依赖目标的集合,$@――编译目标;
L12:$<――依赖目标的第一个目标名;如果目标以模式定义的,则将是一个一个取出来的目标集合;
没有评论:
发表评论