首页 > 代码库 > 一点一点学写Makefile(2)-自动搜所当前目录下的所有源文件

一点一点学写Makefile(2)-自动搜所当前目录下的所有源文件

上个博客我们使用的是笨方法添加源文件,本次我要实现的是遍历文件夹来获得所有的cpp文件


[plain] view plain copy
  1. //makefile  
  2.   
  3.   
  4. CROSS =   
  5. CC = $(CROSS)gcc  
  6. CXX = $(CROSS)g++  
  7. DEBUG = -g -O2  
  8. CFLAGS = $(DEBUG) -Wall -c  
  9. RM = rm -rf  
  10.   
  11. SRCS = $(wildcard ./*.cpp)  
  12. OBJS = $(patsubst %.cpp, %.o, $(SRCS))  
  13.   
  14. VERSION = 1.0.0.0  
  15. TARGET = test.$(VERSION)  
  16.   
  17. $(TARGET) : $(OBJS)  
  18.     $(CXX) $^ -o $@  
  19.   
  20. $(OBJS):%.o : %.cpp  
  21.     $(CXX) $(CFLAGS) $< -o $@  
  22.   
  23.   
  24. clean:  
  25.     $(RM) $(TARGET) *.o  


第十一行功能:自动搜索指定目录下的所有cpp文件,如果没有指定,默认是当前目录,指定方法 - SRCS = $(wildcard ./src/*.cpp)

第十二行功能:通过cpp文件获得与之同名的*.o类型的文件

第二十行功能:将*.o文件和*.cpp文件想对应起来(这里会默认看成一个循环,即一个*.o和一个*.cpp文件均对应,直到所有的cpp文件和*.o文件都编译完成)

第二十四行,因为生成的目标文件包含版本信息,因此文件名不确定,建议使用$(TARGET)的形式,这是引用一个变量,在第十五行已有定义


下一节,我将会给大家讲,如何添加第三方库和第三方库所使用的头文件

一点一点学写Makefile(2)-自动搜所当前目录下的所有源文件