Linux学习笔记-Makefile优化之头文件依赖

140 篇文章 11 订阅

如果头文件被更新,则包含了它的cpp文件应该被重新编译。

比如first里面有个函数,main函数调用了first里面的函数,那么first.h变化了,main肯定要重新编译

 

这里有个知识点:

-MMD 【这是编译器使用的选项】

g++/gcc 编译xxx.cpp文件时,可以提取里面的头文件

如下面的这个main.cpp源码:

#include "first.h"
#include "second.h"

#include <stdio.h>

int main() {
	firstPrint();
	secondPrint();
	printf("main called!\n");
	return 0;
}

他用了first.h和second.h

从这里就可以看到了!!!!!main.o依赖main.cpp first.h second.h,这条

 

这里介绍一个指令:

-include $(XXXX) 将所有的.d文件包含进来

 

所有有下面这个Makefile


EXE=helloworld

CPP_SOURCES=$(wildcard *.cpp)
CPP_OBJECT=$(patsubst %.cpp, %.o, $(CPP_SOURCES))
DEP_FILES=$(patsubst %.o, %d, $(CPP_OBJECT))

$(EXE): $(CPP_OBJECT)
	g++ $(CPP_OBJECT) -o $(EXE)
	
%o: %.cpp
	g++ -c -MMD $< -o $@
	
-include $(DEP_FILES)

clean:
	rm -rf *.o *.d $(EXE)

运行截图如下:


EXE=helloworld

CPP_SOURCES=$(wildcard *.cpp)
CPP_OBJECT=$(patsubst %.cpp, %.o, $(CPP_SOURCES))
DEP_FILES=$(patsubst %.o, %d, $(CPP_OBJECT))

$(EXE): $(CPP_OBJECT)
	g++ $(CPP_OBJECT) -o $(EXE)
	
%o: %.cpp
	g++ -c -MMD $< -o $@
	
-include $(DEP_FILES)

clean:
	rm -rf *.o *.d $(EXE)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT1995

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值