Makefile 脚本小列举


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)
原文地址:https://www.cnblogs.com/Sico2Sico/p/5384188.html