前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于makefile 快速掌握模板教程

关于makefile 快速掌握模板教程

作者头像
多凡
发布2019-12-10 18:27:51
5420
发布2019-12-10 18:27:51
举报
文章被收录于专栏:sringboot

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_44580977/article/details/103417556

代码语言:javascript
复制
1.想一想我们如果没有makefile的时候是如何生成可执行程序的呢?
	第一步.	g++ -E test.cpp  //预处理替换掉宏定义
	第二步.	g++ -S test.cpp  //会生成test.s的汇编程序
	第三步.	g++ -c test.cpp  //生成目标文件
	第四步. 	g++ test..o test.out -I ACE //连接.o文件,至此完成生成可执行文件test.out  .out 是自定义目的是为了标识可执行文件.

2 这些步骤如果用makefile呢?他是要怎么做的

代码语言:javascript
复制
从这个小项目去理解makefile原理

项目文件就一个 socketser.cpp

makefile 编写如下

代码语言:javascript
复制
1	test: server
2		g++ socketser.o -o test.out
3	server:
4		g++ -c socketser.cpp
5		
6	.PHONY:clean
7	clean:
8		rm test.out socketser.o

有了makefile就不考虑前两步了,

我们首先看第二行,我们要做的就是告诉makefile,

我们要生成test.cpp 需要连接目标文件(.o 文件),才能生成 test.out.

makefile在输入make指令运行后,他会找到第二行,一看-o 后面的参数,

他知道我生成的是test.out 然后找到第二行的那些.o文件,

发现所在目录下面没有这些-o文件,然后他会对应-o文件按顺序对应着第一行server,

找到第三行,执行第四行的命令生成-o文件,回到第二行就成功生成test.out可执行文件了。

3.如果你了解了上面基本可以应对平常入门的项目编译了

下面这个makefile 是行业内makefile的基本格式

分别用到了变量,$()使用 定义的话直接 =就可以

和静态库链接编译 如-pthread

代码语言:javascript
复制
# 源文件名
TCP = TCPClientBase
SHM = SHMFIFO
OL = OrderList
RS232 = RS232Driver
MAIN = main
DRI = RS232
# 链接源文件
OBJ = $(obj)$(TCP).o $(obj)$(SHM).o	$(obj)$(OL).o \
	$(obj)$(RS232).o $(obj)$(MAIN).o
#路径
src = ./src/
obj = ./bin/

$(DRI):$(TCP) $(SHM) $(OL) $(RS232) $(MAIN)
	g++ -g $(OBJ) -o $@.out -pthread -static /usr/lib/libjson_linux-gcc-5.4.0_libmt.a
$(TCP):
	g++ -g -c $(src)$@.cpp -o $(obj)$@.o
$(SHM):
	g++ -g -c $(src)$@.cpp -o $(obj)$@.o
$(OL):
	g++ -g -c $(src)$@.cpp -o $(obj)$@.o
$(RS232):
	g++ -g -c $(src)$@.cpp -o $(obj)$@.o
$(MAIN):
	g++ -g -c $@.cpp -o $(obj)$@.o

.PHONY:clean
clean:
	-rm $(OBJ) $(DRI).out
版权所属,转发请留言
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/12/06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 版权所属,转发请留言
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档