文件组织如下:
--Makefile
--src目录
--main.cpp
--func.cpp
--func.h
--head目录
--head.cpp
--head.h
--obj目录
Makefile写法如下
DIR_OBJ = ./obj
DIR_SRC = ./src
SRC = $(wildcard ${DIR_SRC}/*.cpp ${DIR_SRC}/head/*.cpp)
OBJ = $(patsubst %.cpp, ${DIR_OBJ}/%.o, $(notdir $(SRC)))
INC = $(patsubst %, -I%, $(shell find src -name '[a-zA-Z0-9]*'.h))
BIN_TARGET = main
CC = g++
CFLAGS = -g -Wall $(INC)
${BIN_TARGET}: ${OBJ}
$(CC) $(OBJ) -o $@
${DIR_OBJ}/%.o: ${DIR_SRC}/head/%.cpp
$(CC) $(CFLAGS) -c $< -o $@
${DIR_OBJ}/%.o: ${DIR_SRC}/%.cpp
$(CC) $(CFLAGS) -c $< -o $@
# 防止命名冲突例如有名为clean的文件
.PHONY:clean
clean:
find ${DIR_OBJ} -name *.o -exec rm -rf {} \;