工程文件夹下有 bin,obj,src,include文件夹,类的定义.h文件在include文件夹下,类的实现.cpp在src文件夹下。main函数在根目录的main.cpp文件中。编译时将.o编译到obj文件夹下,将可执行文件编译到bin文件夹下。
DIR_INC = ./include DIR_SRC = ./src DIR_OBJ = ./obj DIR_BIN = ./bin SRC = $(wildcard ${DIR_SRC}/*.cpp) OBJ = $(patsubst %.cpp,${DIR_OBJ}/%.o,$(notdir ${SRC})) main.cpp TARGET = main BIN_TARGET = ${DIR_BIN}/${TARGET} CC = g++ CFLAGS = -g -Wall -I${DIR_INC} ${BIN_TARGET}:${OBJ} $(CC) $(OBJ) -o $@ ${DIR_OBJ}/%.o:${DIR_SRC}/%.cpp $(CC) $(CFLAGS) -c $< -o $@ .PHONY:clean clean: rm -rf ${DIR_OBJ}/*.o
(1)Makefile中的 符号 $@, $^, $< 的意思:
$@ 表示目标文件
$^ 表示所有的依赖文件
$< 表示第一个依赖文件
$? 表示比目标还要新的依赖文件列表
(2)wildcard、notdir、patsubst的意思:
wildcard : 扩展通配符
notdir : 去除路径
patsubst :替换通配符