makefile自动增量编译技术

#makefile
################################################################################################
#用wildcard通配符指定当前路径下的所有以.cpp结尾的文件名
CXX_CPP := $(wildcard *.cpp)
#把所有以.cpp结尾的文件名转换为.o结尾的文件名,编译.o文件用
CXX_OBJ := $(CXX_CPP:.cpp=.o)
#把所有以.cpp结尾的文件名转换为.d结尾的文件名,编译.d文件用
CXX_DEP := $(CXX_CPP:.cpp=.d)
#把所有以.cpp结尾的文件名转换为.o结尾的文件名,链接用
LINK_OBJ := $(CXX_CPP:.cpp=.o)
#使用g++编译器
CC = g++
#用strip来裁减编译出来的程序,减少程序大小
STRIP = strip
#编译标志
#不要用编译优化,以免产生莫名奇妙的问题
CFLAG = #-O2
#指定链接库
LIBS := -lpthread -lm
################################################################################################
#从all开始执行,依次执行${CXX_DEP} ${CXX_OBJ} main这个步骤
all:${CXX_DEP} ${CXX_OBJ} main
#编译.cpp文件的依赖头文件信息, 并放入.d文件里
${CXX_DEP}:%.d:%.cpp
${CC} ${CFLAG} -MM $< -o $@ \
#编译.cpp文件,并生成.o文件
${CXX_OBJ}:%.o:%.cpp
${CC} ${CFLAG} -c $< -o $@ \
#把.o文件链接成可执行程序
main: ${LINK_OBJ}
${CC} -static ${CFLAG} -o $@ $(LINK_OBJ) ${LIBS} \
#裁减可执行程序
${STRIP} $@
#把.d文件的文件依赖信息包含进来,自动增量编译的重要步骤
-include $(CXX_DEP)
#运行可执行程序
run:main
./main
################################################################################################
##
#清除操作
.PHONY: clean
clean:
rm -f *.d
rm -f *.o
rm -f main

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值