Makefile的使用

一、Makefile介绍

慢慢项目代码成型以后,老师又交给我们Makefile的使用,才发现多好用。一个项目文件中的源文件不计其数,按类型、功能模块分别存放在若干个目录当中,而你要运行的时候,总不能一个一个打开去运行命令,而makefile制定了一系列规则,那些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至需要一些更复杂的功能操作,都可以通过makefile去执行,他就像一个Shell脚本一样,其中也可以去执行操作系统的命令,下面我们就以我上一篇博客里创建的文件夹来操作来编写一下makefile
上一篇博客链接 点击链接

二、 Makefile的通用结构

#以'#'开头的行表示注释
#定义变量VAR,强制赋值为app
VAR=test 
#在VAR之前定义的值后面再追加app这个值,这时该变量值扩展为testapp 
VAR+=app 
#如果之前VAR没有被定义,则定义并使用testapp;否则使用之前的值。
VAR?=testapp 
# 第一条目标为总的目标,
# 依赖可以是文件(目录)或为其他目标
# 动作可以是Linux命令,动作的那一行必须以TAB键开头
target: depend1 depend2 depend3 ... 
[TAB] action1 
[TAB ] action2 
target1: 
[TAB] action1 
[TAB] action2

默认的情况下,make命令会在当前目录下按顺序找寻文件名为“GNUmakefile”、“makefile”、“Makefile”的文件,找到后就解释并执行该文件,如果找不到就提示错误并退出。一般Makeifle文件名我们会用Makefile或makefile,而不会使用GNUmakefile。接下来我们以之前的静态库和动态库为例讲解makefile的编写和使用。

三、写Makefile

之前我们在文件路径下需要敲好几条命令才能编译生成动态库文件,而如果要拷贝安装文件或删除不用的文件时也要添加额外的命令。这样如果每次都要编译、安装、删除就比较麻烦。而如果我们写了一个makefile之后,接下来的工作只需要敲一条命令即可。下面是lib路径下用来生产静态库和动态库的makefile文件:

  • 静态库Makefile
    在这里插入图片描述

  • 动态库Makefile
    在这里插入图片描述

  • main函数Makefile
    在这里插入图片描述此时我们可以去敲make或者其他分别运行得到我们想要的结果,但是我们也可以在最顶层的目录里写个总Makefile来管理子文件的Makefile,这样就太方便了!

  • 最顶层的Makefile(一步运行到位)
    在这里插入图片描述

  • 最后获得目录结构
    在这里插入图片描述
    这样就一目了然,感觉想上级管理下级,方便了太多!!

  • 最后运行
    在这里插入图片描述
    程序运行成功,然后我们查看一下各级文件的Makefile分别都完成任务了没有
    在这里插入图片描述
    都已经分别生成各自的库文件,并且复制到了lib/文件路径下,既然程序运行成功了,我们就收尾吧.
    在这里插入图片描述
    可以看到,我们输入make clean ,Makefile就依据我们写的语句清空了所有产生的库文件、可执行文件等,是不是特别方便。这里也只是我个人初写Makefile的个人笔记,Makefile里还有很多强大的功能,我们一起慢慢学习!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值