编译多个目录源码的Makefile写法

文件组织如下:

--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 {} \;


你可能感兴趣的:(编译多个目录源码的Makefile写法)