尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
make和makefile(自动化构建)
一、makefile1.1makefile的基本了解会不会写makefile从⼀个侧⾯说明了⼀个⼈是否具备完成⼤型⼯程的能⼒,⼀个⼯程中的源⽂件不计数其按类型、功能、模块分别放在若⼲个⽬录中makefile定义了⼀系列的规则来指定哪些⽂件需要先编译哪些⽂件需要后编译哪些⽂件需要重新编译甚⾄于进⾏更复杂的功能操作简单来说就是工程上有很多xxx.c或xxx.cpp等源文件,如果我们一个个源文件都gcc xx.c xxx1.c… -o xxx.exe 的话就效率很低makefile就可以把多个源文件一起编译成可执行程序,然后通过make指令就能自动化编译1.2makefile的基本使用(1)它是一个普通文件,里面编写的代码是可以通过vim编写的,下面通过最简单的写法来揭开面纱这是最基本的写法:一条规则依赖关系依赖方法依赖关系: 就是目标文件的生成依赖于依赖单个文件或多个文件列表,就比如code.exe:code.c,意思为code.exe的生成依赖于当前目录已存在的源文件code.c依赖方法:面对要生成的目标文件而产生的shell指令或者其他软件的指令,比如这里的gcc code.c -o code.exe, 我要生成code.exe,那我要产生的方法就是用gcc编译code.c去生成code.exe这个可执行文件所以依赖关系和依赖方法是一对的,它们之间可以产生因果关系也可以互不关联,意思为你的·依赖方法可以是以生成目标文件作为目的而写的,也可以是不生成目标文件而形成的指令。只要依赖关系存在下面的依赖方法可以写任何指令但一般肯定是相互产生影响的依赖方法的命令要以tab缩进来写否则会报错1.3makefile的基本使用(2)make是一条指令,它默认的是执行第一条规则后面也可以跟目标文件,然后就会执行它那里的依赖方法(因为就是简单的指令就简单过了)伪目标:上面说的无强因果关系的规则一般用在这里.它是执行指令后不会生成目标文件,也就是不会在当前目录下生成文件,它一般用来做工程的清理工作,伪目标的用法分析:.phony:后面的为虚拟目标文件名可以是任意名字只是常用的是clean并且依赖关系的依赖文件可以是空,主要就是为了执行下面的指令,rm的清理工作,因为我们用的vs或其他编译器你运行了代码后再运行就会运行不了,叉掉黑框就能运行本质就是清理了生成的可执行文件1.4makefile的基本使用(3)上面的伪目标还有细节之处:你有没有发现你写的一条规则make之后再make一下就不能了而清理工作可以一直make clean但是你可以尝试去修改一下你的源文件代码,你再重新make之后又能了(不信可以试试)为什么呢?文件的属性:一个指令stat 普通文件 这个指令就能查询,比如我查看code.exe的文件属性最主要的就是我框起来的三个先讲Modify-文件内容修改时间先说结论跟这个属性有关gcc执行的命令是跟源文件修改时间和可执行程序的修改时间有关,画图更好理解touch 已存在的文件可以修改Modify的时间为使用这个指令的时间,所以相反如果touch code.c还是直接vim code.c进去修改内容也好都能让源文件的Modify可执行程序文件的Modify那就可以重新再gcc的命令会重新编译出新的code,exe覆盖旧的code.exe所以对于有依赖关系的规则:加PHONY:让make忽略源⽂件和可执⾏⽬标⽂件的M时间对⽐,直接执行下面的指令依赖关系为空:.PHONY是让make不去磁盘上找目标文件直接执行下面的指令,这样就是为了避免如果你当前目录有该目标文件,依赖关系为空的话就会认为该文件是最新的就不会执行下面的指令了,所以.PHONY和依赖关系为空通常是配套使用就是为了只执行下面的命令上面的依赖关系code.exe,加上.PHONY试一下Change属性变更(文件的权限等)时间更新Access常指的是⽂件最近⼀次被访问的时间。在Linux的早期版本中每当⽂件被访问时其atime都会更新。但这种机制会导致⼤量的IO操作。具体更新原则不做过多解释。1.5makefile的基本使用(4)makefile里的是对里面的内容做分析后再使用对应的依赖方法比如下面的例子:也就是说当发现某个规则的依赖关系不存在时不会立马结束报错,而是会把它存入个依赖方法栈里再去寻找⼀层⼜⼀层地去找⽂件的依赖关系直到最终编译出第⼀个⽬标⽂件。1.6makefile的拓展语法多个源文件的链接体会makefile的快捷,常用的语法比如 touch src{1…100}.c这样可以创建100个srcx.c的文件然后编写makefile文件:上面已经注释了对应的写法,这里也没有办法,就和学语言的语法一样要记注意点:上面为什么要把.c转为.o后缀再编译呢?因为这样不用所有的源文件重新编译只需要对应的修改了的源文件才要重新生成.o文件其他的源文件都是用旧的.o文件这样就提高了效率这步的需求是后面的这步需要对应的.o文件来形成可执行程序文件,但是当前目录下没有就会触发隐式规则去生成对应的.c文件去生成对应的.o文件再执行这条指令,后面的就是显示写把对应的.c生成.o文件这个是通用的代码,以后不管几个文件都能使用
RELATED

相关推荐

为什么BilibiliDown是B站音频提取的终极解决方案?完整指南揭秘

为什么BilibiliDown是B站音频提取的终极解决方案?完整指南揭秘

为什么BilibiliDown是B站音频提取的终极解决方案?完整指南揭秘 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_m…

📅 2026/8/24 9:58:47
项目型制造成本核算:WBS成本归集、变更冲击量、完工百分比,三个逻辑讲透

项目型制造成本核算:WBS成本归集、变更冲击量、完工百分比,三个逻辑讲透

去年给一家做化工压力容器的企业做成本梳理。他们是典型的项目型制造——每台设备按客户工艺要求定制设计,一个合同就是一个项目。订单来了先出技术方案、再做详细设计、然后采购生产安装调试,周期从三个月到一年半不等。 项目经理跟我说了一句话&#x…

📅 2026/9/12 2:01:39
AI写论文神器推荐:高效搞定论文写作的实用工具精选指南

AI写论文神器推荐:高效搞定论文写作的实用工具精选指南

Wispaper官网地址:https://www.wispaper.ai/ 目前,全球学术成果总量已超过3.6 亿篇,覆盖 32 个学科领域,每天还有数万篇新文献加入索引。然而,这些知识中的大部分仍被困在语言的屏障之后。一篇日语论文想要传到柏林的…

📅 2026/9/5 9:06:42
MORE NEWS

更多资讯

📰

2026游戏客服成本高、响应慢、出海合规难?这套一体化方案被多家头部公司验证过了

引言做游戏运营的人,对下面这些场景一定不陌生:玩家半夜充值不到账,客服没人响应,第二天差评已经刷屏;出海游戏玩家用LINE咨询,客服团队却只会用微信后台;每月客服人力成本几十万,但…

📰

Kali Linux渗透测试环境搭建:新手必学工具与基础配置详解

一、引言:装好 Kali ≠ 能干活 几乎所有网安新手的第一个动作都是"装个 Kali"。但真实情况往往是:虚拟机装完了,apt upgrade 一跑,桌面崩了;工具装了一堆,扫描时却连靶机都 ping 不通&#xff1b…

📰

linux-command 项目实战:grub2-set-default 命令详解——设置 GRUB 默认启动内核的完整指南

文档教程 【免费下载链接】linux-command Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux 项目地址: https://gitcode.com/GitHub_Trending/linux/linux-command 点击查看 免费下载 导读 grub2-set-default 是…

📰

en.javascript.info 逻辑运算符实战:深入解析 `alert( alert(1) alert(2) )` 的输出与短路求值

文档/教程前端 【免费下载链接】en.javascript.info Modern JavaScript Tutorial 项目地址: https://gitcode.com/gh_mirrors/en/en.javascript.info 点击查看 免费下载 导读 本篇文章基于 en.javascript.info(Modern JavaScript Tutorial&#xff09…

📰

Grok 4.7 API升级详解:稳定性优化与开发者适配指南

1. Grok 4.7 不是“新模型”,而是API层的一次精准外科手术 Grok 4.7 这个名字一出来,很多开发者第一反应是:“又出新大模型了?”——其实不是。它既不是参数量翻倍的下一代,也不是架构重构的全新版本,而是…

📰

Agent 开发实战:用 Laya 和 Jev 构建判断器,让智能体从能跑到靠谱

1. 从“能跑”到“靠谱”:为什么你的 Agent 需要一个判断器做 Agent 开发的朋友大概率都经历过这个阶段:Demo 跑通了,工具调用也接上了,看着模型一步步执行任务,感觉一切都很美好。但一旦把它放到真实场景里&#xff0…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬