编译多个目录源码的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 {} \;


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值