Makefile学习笔记系列2:一个简单的Makefile(增加子目录结构)



在Makefile学习笔记系列1:http://blog.csdn.net/u010312436/article/details/52461257的基础上,循环渐进的对makefile进行改写,因此系列2也只有一个makefile文件,子目录下没有子makefile。

首先还是来看下目录结构:

Makefile学习笔记系列2:一个简单的Makefile(增加子目录结构)_第1张图片

将系列1的相应文件放入相应名字的文件夹下。

Makefile代码:

XX = g++
CFLAGS = -g
CLIBS = -lpthread

INCLUDES = $(wildcard ./include/*.h ./sender/*.h ./receiver/*.h ./responser/*.h) # INCLUDE = a.h b.h ... can't be defined like "INCLUDE = ./*.h"
SOURCES = $(wildcard ./*.cpp ./sender/*.cpp ./receiver/*.cpp ./responser/*.cpp)
INCLUDE_DIRS = -I./include -I./sender/ -I./receiver/ -I./responser/ #指定头文件目录,代码中就不需要把头文件的完整路径写出来了

TARGET = mainApp
OBJECTS = $(patsubst %.cpp,%.o,$(SOURCES))

$(TARGET) : $(OBJECTS)
       $(XX) $(CFLAGS) $^ -o $@ $(CLIBS)
$(OBJECTS) : %.o : %.cpp
       $(XX) -c $(CFLAGS) $< -o $@ $(INCLUDE_DIRS)

.PHONY : clean
clean:
      rm -rf $(TARGET) $(OBJECTS)


这里就不详细讲解makefile的各个变量代表什么意思了,这个makefile和系列1的区别是SOURCES变量不同,和添加了INCLUDE_DIRS变量。不一样的地方用红色标注出来了。相信应该很容易理解。

系列3将会为每个子目录添加makefile文件。




你可能感兴趣的:(Makefile)