趣文网 > 作文大全

程序员的术与道:术——makefile基本操作

2020-12-05 23:45:01
相关推荐

1.makefile是什么

如果你接触过linux下的项目,或者接触过C语言的项目,那么你一定听说过makefile。很多有名的开源项目都是用makefile管理的,比如linux、gcc等等(如果你没有听说过linux,那么失礼了)。

makefile用于管理c语言项目,负责项目的编译构建工作,主打依赖管理。经典的开源项目编译三步走如下:

2.makefile有什么用

对于C语言来说,或者对于一般的编译型语言来说,程序从源文件到可执行文件都要经历以下步骤:

预编译编译汇编链接打包安装其中最主要的两个过程就是编译和链接,编译就是把每个.c文件编译成目标文件(.o或者.obj),链接就是把许多个目标文件合并在一起成为一个可执行的文件。这其中其实涉及到了每一个源文件,这些源文件基本都要经历这样一个过程:

每一个文件都需要被gcc编译一遍,当你的项目足够大时,这份工作是相当庞大的。而且你把源码换到其他地方,还需要继续重复来一遍。这个时候makefile出场了,makefile为你解决了这些重复性的劳动。让你一次编写,处处运行。

你一定要记住一句话:

在计算机的世界里,如果你在做一件重复的事情,那么你一定要寻找一下或者思考一下,必定有这样的一个软件工具适合你。

makefile为你提供了一些规则,简化了很多的步骤,很大的一个项目只要一个makefile就搞定了,是不是很舒服?

3.makefile基本规则

makefile主要使命是依赖管理,因而makefile需要正确处理以下几个问题:

依赖是什么目标是什么目标的构建规则是什么对应以上三个问题,makefile提供以下基本规则:

恭喜你,你已经学会makefile了,以上就是makefile的精华。(笑,当时我就是这么想的,找工作的时候就为这个出丑了。自吹精通makefile。-..-)

以下是makefile的基本概念:

目标一个目标(target)就构成一条规则。目标通常是文件名,指明Make命令所要构建的对象。目标可以是一个文件名,也可以是多个文件名,之间用空格分隔。除了文件名,目标还可以是某个操作的名字,这称为"伪目标"(phony target)。

依赖依赖通常是一组文件或者中间目标,它们用空格隔开。指定了"目标"是否重新构建的判断标准:只要有一个前置文件不存在,或者有过更新(前置文件的last-modification时间戳比目标的时间戳新),"目标"就需要重新构建命令命令(commands)表示如何更新目标文件,由一行或多行的Shell命令组成。它是构建"目标"的具体指令,它的运行结果通常就是生成目标文件。每行命令之前必须有一个tab键。如果想用其他键,可以用内置变量.RECIPEPREFIX声明。内置函数

shell:用来执行shell命令 wildcard 函数:扩展通配符

patsubst函数:替换通配符

$@:$@指代当前目标,就是Make命令当前构建的那个目标。比如,make foo的 $@ 就指代foo。$<:$< 指代第一个依赖。比如,规则为 t: p1 p2,那么$< 就指代p1。$?:$? 指代比目标更新的所有依赖,之间以空格分隔。比如,规则为 t: p1 p2,其中 p2 的时间戳比 t 新,$?就指代p2。$^:$^ 指代所有依赖,之间以空格分隔。比如,规则为 t: p1 p2,那么 $^ 就指代 p1 p2 。$*:$* 指代匹配符 % 匹配的部分, 比如% 匹配 f1.txt 中的f1 ,$* 就表示 f1。

阅读剩余内容
网友评论
相关内容
延伸阅读
小编推荐

大家都在看

从来没有这样勇敢作文 军训400字作文 被关心的感觉真好作文 端午节的作文五年级 最美的声音作文 美丽的樱花树作文 龟兔赛跑的续写作文 作文我的大学 作文编写童话 鸣鹤古镇作文 留心观察的作文 中秋的作文400 对抗疫情作文 迷人的月亮作文 有关桥的作文 银川的秋天作文 煮饭作文200字 老照片里的故事作文 游仙女山作文 有关人工智能的作文 我把温暖送给你作文 三年级作文游乐场 想象作文好词 写荷花的作文400字 什么是状物的作文 描写秋天的果园的作文 雪花的作文300字 项脊轩志作文素材 春天来了的作文 新学期作文六年级