make和Makefile总结一

该系列将会一步一步的从最基本的Makefile文件编写讲到复杂项目的Makefile编写


一:make的介绍

对于一个真实的软件项目,为了通过make生成最终的目标,需要产生大量的中间目标,
而各规则所描述的依赖关系就是将所有的目标关联在一起,结果就是使得我们可以只运行一次 make命令,
而链式反应地创建整个软件项目的所有目标-编译每一个源文件生成目标文件、生成库,以及创建可执行文件。
是否真正驾驭Makefile的标志,就看能否运用目标和依赖关系去思考和表达需要make为我们所做的事情。


二:makefile的基本编写规则

学习makefile,首先要掌握3个概念,目标(target),依赖关系(dependency)和命令(command)。
目标:是指make以后要生成什么
依赖:是指目标所依赖的起来目标(可以不要)
命令:是告诉make如何生成目标
格式:

目标:依赖
	命令
main:main.c
	gcc main.c -o main

目标不仅仅只能是想要生成的文件,也可以是想要执行的命令
将Makefile文件改成以下样子:

main:main.c
	gcc main.c -o main
clean:
	rm main

我们使用make命令的时候,make只会进入Makefile中寻找第一个目标,也就是main,当生成了main后就退出了
我们想要make去执行rm main,就需要使用make clean命令,make就会去寻找clean这个目标并执行了

注意:1.make会通过判断目标文件是否存在 或者 对比依赖文件的时间戳来判断依赖文件是否改变 来决定是否执行命令,
       当我们make成main文件后,不改变main.c再次使用make命令,就会出现make: `main' is up to date.
	    只有删除main 或者 更新依赖文件main.c才能再次make
			  
     2.make会把clean也当作一个目标文件,因为Makefile的目录中没有clean文件,然后也没有依赖文件,所以可以重复执行make clean命令
       如果目录中存在clean文件时,我们再次使用make clean命令就会提示make: `clean' is up to date. 这样就和我们所想的流程就对不上了
	   这时候我们就需要使用到假目标了,假目标的关键字是.PHONY(必须是大写),假目标会告诉make,
	   我后面跟的目标都不要当作文件来对他们进行判断需不需要执行命令,反正每次都执行命令就对了
       将Makefile文件改成以下样子:
main:main.c
   gcc main.c -o main
   				  
.PHONY:clean
clean:
   rm main
    .PHONY后面可以跟多个目标,用空格隔开就行了,目标后面也是可以跟多个依赖,也是用空格隔开就好了
    3.make执行的时候会把命令内容都打印一边,如果想要不打印,只需要在命令前加上@即可

  • 这样一个最基本的Makefile文件就写好了
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值