Gnu Makefile 阅读笔记(3)

Linux下针对含有子目录的makefile文件的编写模板

CC=g++
CCFLAGS=-Wall -std=c++11
TARGET=webserver
#提取子目录
SUBDIR=$(shell ls -d */)
#提取子目录中所有扩展名为.cpp的文件
SUBSRC=$(shell find $(SUBDIR) -name '*.cpp')
#将子目录中扩展名为.cpp的文件转换成扩展名.o的文件
SUBOBJ=$(SUBSRC: %.cpp = %.o)
#提取根目录下的扩展名为.cpp的文件
ROOTSRC=$(wildcard *.cpp)
#将根目录下扩展名为.cpp的文件转换成扩展名.o的文件
ROOTOBJ=$(ROOTSRC: %.cpp = %.o)

$(TARGET) : $(ROOTSRC) $(SUBSRC)
     $(CC) $(CCFLAGS) -o $@ $^
.cpp.o:
     $(CC) $(CCFLAGS) -c $< -o $@

.PHONY: clean
clean:
     rm -rf *.o $(TARGET)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容