makefile 是一款功能强大的工程项目管理套件,可以根据各个文件之间的依赖关系,自动生成事物处理的完整流程。我们现在有一个要求:使用 make 来一次性的把目录下的所有源文件编译成单独可运行的程序。

搜索目录总的所有源文件

使用通配符(wildcard)来获取当前目录总的所有 .cpp 文件

SRCS = $(wildcard *.cpp)

指定编译成相应名称的独立程序

PROGS = $(patsubst %.cpp, %, $(SRCS))

执行相应的功能

# 自动完成编译过程

CC      = g++
CFLAGS  = -ggdb3 -std=c++11 -Wall
SRCS    = $(wildcard *.cpp)
PROGS   = $(patsubst %.cpp, %, $(SRCS))
.PHONY: all info clean

all: $(PROGS)

%: %.cpp
	$(CC) $(CFLAGS) -o $@ $<

info:
	@echo "all source files..."
	@echo $(SRCS)
	@echo "all target programms..."
	@echo $(PROGS)

clean:
	rm -f $(PROGS)

make