简单通用的一则makefile

 

在linux下面下写程序少不了写makefile,如果每个文件都按部就班的详细的写编译脚本,效率势必低下;makefile提供了自动化变量、模式规则等,稍加利用可以提高写makefile的效率。下面列举一个简单通用的makefile书写规则:

  1. SRCS = $(wildcard *.c)  
  2. OBJS = $(SRCS:.c = .o)  
  3. CC = gcc  
  4. INCLUDES = -I/usr/your_path/include  
  5. LIBS = -L/usr/your_path/lib  
  6. CCFLAGS = -g -Wall -O0  
  7.   
  8. yourApp : $(OBJS)  
  9.     $(CC) $^ -o $@ $(INCLUDES) $(LIBS)  
  10.   
  11. %.o : %.c  
  12.     $(CC) -c $< $(CCFLAGS)  
  13.   
  14. clean:  
  15.     rm -rf OBJS  

L1:$(wildcard *.c)将把当前目录下面的下面的以.c结尾的文件名展开,即SRCS这个变量的值就是这个当前目录下面的所有.c文件的文件名所组成的串,文件名间用空格分割;

L2:.c替换为.o后的串;

L3――L6:变量的定义;

L9:$^――依赖目标的集合,$@――编译目标;

L12:$<――依赖目标的第一个目标名;如果目标以模式定义的,则将是一个一个取出来的目标集合;

 

没有评论: