一个很好的Makefile例子

1.欢迎来到我的酒馆
从头讲一门工具总是显得很难,先借住一個小項目學習Makefile。
tinyhttpd代码仅有502行,用来学习http server非常不错。通过它,你可以了解到http服务器的本质。
https://sourceforge.net/projects/tinyhttpd/ 解压出来

2.Makefile的由來
make+file,Makefile是一種配置文件,它由make程序執行。Makefile可以看成是加强版的shell,shell里面能用的命令,在Makefile里也可以用。Makefile书写规则,如下图:


1.target+dependencis 称为一个执行单元,下方是編譯命令
2.编译命令前,一定要摁下一个TAB键。别敲空格,没用的。。。


看看tinyhttpd的Makefile是怎么写的,没有冗余,简单明了。


-W: 关闭编译警告
-Wall: 打开编译警告
-lpthread:l指link,链接pthread库
-o: o指output,输出目标

把’-lsocket’删了,因为这个程序有点老,1999年写的,现在默认有了socket这个库。保存退出,make编译。如上面说的规则,tinyhttpd的Makefile中有3个执行单元,分别是all,httpd和clean。

先找到它的执行顺序。makefile是解释执行的,从上往下。

 ①:make先找到第一个规则all
 ②:all需要httpd,httpd有無或被修改 ?跳到③ :后面的③④⑤都不会执行。
 ③:httpd需要httpd.c,httpd.c有無或被修改 ? 执行⑤ :报错No to make target ‘httpd’
 ⑥:clean不需要别人,他就默认不会执行,除非命令行用make clean。
 
不知道我讲清楚执行流程没有。
有点印象的话,我们把客户端程序(simpleclient.c)也加进去编译。


3.更进一步
①②③ 的效果是一样的。都是基于上一步跟进的,编写的复杂度也增加,也越来越像你看到的牛逼的、华丽的Makefile。

————————————————
版权声明:本文为CSDN博主「坦克世界」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sfuncc/article/details/80185007

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值