CC := gcc
CFLAG := -Wall -g -pthread -lcurses
CXX := g++
CXXFLAG := -Wall -g
LIB := -pthread -std=c++11
C_SRCS := $(wildcard *.c) #搜索所有的.c文件
CPP_SRCS := $(wildcard *.cpp) #搜索所有的.cpp文件
CTARGETS :=${C_SRCS:%.c=%} #把所有的.c文件转换成文件名的目标文件
CPPTARGETS :=${CPP_SRCS:%.cpp=%} #把所有的.cpp文件转换成文件名的目标文件
MAKEFILS := $(wildcard */[mM]akefile) #搜索下一层目录下所有的Makefile文件
SUBDIRS := $(dir $(MAKEFILS)) #提取出所有的目录
all : $(CTARGETS) $(CPPTARGETS)
@for MYDIR in $(SUBDIRS) ; do make -C $${MYDIR} $@ ; done
% : %.c
$(CC) -o $@ $< $(CFLAG)
% : %.cpp
$(CXX) $(CXXFLAG) -o $@ $< $(LIB)
clean:
@for MYDIR in $(SUBDIRS) ; do make -C $${MYDIR} $@ ; done
rm -f $(CTARGETS) $(CPPTARGETS)