Makefile核心(第一节)

news2024/11/19 11:27:11

文章目录

  • 前言
  • Makefile核心
  • 举例讲解
  • 结束

前言

曾以为学习过程是痛苦的,其实真正静下心来是美好的,虽然很枯燥,但生活就是这样,不学习还能干吗呢…… ——张顺

makefile是相当重要的,只要你要写大工程,就必须学习makefile,我在网络找了半天没有找到合适且适合学习的资料,于是乎我想写一个关于Makefile系列的文章,将自己所学,并且总结起来,发布出来,和大家一起讨论进步学习。

还有一点:
以后的章节估计多数就要开启付费了,想学习的小伙伴希望继续跟着,一起学习,如有问题欢迎留言共同讨论解决,生活不易,开启付费……

理论了解(可以不看):
一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,也可以执行操作系统的命令。–百度

Makefile核心

在这里插入图片描述

目标: 是要最终生成的文件
依赖: 目标的依赖,由什么构成的目标,比如可以是目标的源代码文件等等
tab命令: 必须前面加tab符号,当我的依赖更新则会执行命令

举例讲解

demo1.c的源代码
在这里插入图片描述
和Makefile的源代码
在这里插入图片描述
hello: 目标生成的文件
demo1.c hello文件由我这个demo1.c的文件生成
gcc -o hello demo1.c 编译指令,当demo1.c的源文件有改动则会执行这个编译,保证最新的hello目标文件

输入make编译文件
在这里插入图片描述
成功编译,且有hello文件
在这里插入图片描述
./hello
在这里插入图片描述

正是我demo1.c写的源代码的执行结果。

但是按照上面我所讲的Make核心,是由3部分组成,这里hello没有问题,但是按照所讲因该也会执行clean的规则下的命令删除hello,但是却可以看到hello可以执行并没有被删除,也就是clean规则命令没有被执行,为什么没有呢?

当然不会有,于是乎你发现clean规则没有,导致无法执行他规则下的命令。

clean规则没有依赖,这就说明,有些规则可以不需要依赖,那么没有依赖如何判断执行rm -f hello这条命令呢?

可以这么做 make clean
在这里插入图片描述
成功执行,且没有了hello文件

带参数输入clean则会执行对应的命令,且是无条件执行,不管你有没有hello文件他都会执行对应命令

我想应该讲明白了吧。

结束

希望大家跟着我一起学习,如有问题欢迎留言共同讨论解决,生活不易,开启付费……

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1059480.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

十天学完基础数据结构-第三天(数组(Array))

数组的基本概念 数组是一种线性数据结构,用于存储相同数据类型的元素。它具有以下基本概念: 元素:数组中的每个数据项称为元素,可以是整数、浮点数、字符等。 索引:每个元素在数组中都有一个唯一的位置,称…

JavaScript系列从入门到精通系列第十四篇:JavaScript中函数的简介以及函数的声明方式以及函数的调用

文章目录 一:函数的简介 1:概念和简介 2:创建一个函数对象 3:调用函数对象 4:函数对象的普通功能 5:使用函数声明来创建一个函数对象 6:使用函数声明创建一个匿名函数 一:函…

2023最新使用微信小程序完成一键授权登录

前言: 使用开发工具:小程序。在我这一篇已经详细介绍了小程序的安装介绍http://t.csdnimg.cn/IEVc0今天我给大家带来的是微信的一键授权登录,保存用户信息,退出的功能!!!希望看完了这篇博客能够…

【python海洋专题十】Cartopy画特定区域的地形等深线图

【python海洋专题十】Cartopy画特定区域的地形等深线图 海洋与大气科学 前几期可以认为关于平面的元素画法🆗了 本期关于特定区域平面画法 全球区域水深图 本期内容 画某元素特定区域的平面图:我有两个方法: 第一个:裁剪nc文…

嵌入式学习笔记(45) NandFlash的接口

9.1.1 Nand的型号与命名 (1)K9F2G08:K9F表示是三星公司的NandFlash系列。2G表示Nand的大小是2Gbit(256MB)。08表示Nand是8位的(数据线有8根)。 (2)Nand命名中可以看出,厂家、系列型号、容量大小、数据位数 9.1.2 Nand的数据位 …

机器视觉工程师,努力方向错了,白费

努力方向错了,白费。 在这个知识经济,知识付费,知识大V横行的时代,知识似乎遍地都是。但你有没有想过,微博里的段子是不是知识?微信里的爆款文章是不是知识?得到App里的音频是不是知识&#xf…

OpenGLES:绘制一个混色旋转的3D球体

一.概述 前面几篇博文讲解了如何使用OpenGLES实现不同的3D图形 本篇博文讲解怎样实现3D世界的代表图形:一个混色旋转的3D球体 二.球体解析 2.1 极限正多面体 如果有学习过我前几篇3D图形绘制的博文,就知道要想绘制一个3D图形,首先要做的…

基于Java的校园二手书交易平台设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

挑战自己,编程你的五子棋:Python+Pygame实践经验分享

引言 五子棋,古老而经典,是一种两人对抗的策略棋类游戏。想要体验制作游戏的乐趣吗?本文将详细指导你如何使用Python语言和Pygame库,一步步打造自己的五子棋游戏! 1. 开始之前:重要准备 首先&#xff0…

使用DNS查询Web服务器IP地址

浏览器并不具备访问网络的功能,其最终是通过操作系统实现的,委托操作系统访问服务器时提供的并不是浏览器里面输入的域名而是ip地址,因此第一步需要将域名转换为对应的ip地址 域名:www.baidu.com ip地址是一串数字 tcp/ip的网络结…

项目进展(六)-继续学习32位ADC芯片ADS1285

一、数据手册学习 1.1时序图 SPI时序图,这是很重要的一个地方,一定要在代码中将SPI配置成对应的模式。 先放一堆截图在这吧,一些引脚的功能及特性还未看到,等具体了解之后再详细介绍下面几张截图的时序: 1.2 内…

大模型RLHF算法更新换代,DeepMind提出自训练离线强化学习框架ReST

文章链接: https://arxiv.org/abs/2308.08998 大模型(LLMs)爆火的背后,离不开多种不同基础算法技术的支撑,例如基础语言架构Transformer、自回归语言建模、提示学习和指示学习等等。这些技术造就了像GPT-3、PaLM等基座…

问答雕虫1

问题: 现在有如下表 假设按时间顺序,记录中连续出现0.2 0.3 0.5 0.7四条记录记为一次有效数据组,统计一段时间范围内,有效数据组出现的次数,最终计算有效数据组在整个时间范围内的记录的占比。用mysql语句或者函数如何…

uniapp uni.showToast 一闪而过的问题

问题:在页面跳转uni.navigateBack()等操作的前或后,执行uni.showToast,即使代码中设置2000ms的显示时间,也会一闪而过。 解决:用setTimeout延后navigateBack的执行。

css自学框架之选项卡

这一节我们学习切换选项卡,两种切换方式,一种是单击切换选项,一种是鼠标滑动切换,通过参数来控制,切换方法。 一、参数 属性默认值描述tabBar.myth-tab-header span鼠标触发区域tabCon.myth-tab-content主体区域cla…

C语言动态内存管理

🐵本篇文章将会对动态内存管理相关知识进行讲解 1. 为什么要存在动态内存管理❓ 目前我们掌握了两种开辟内存的方式,分别为: int a 10;//存放一个值 int arr[] { 1,2,3,4,5,6,7,8,9,10 };//存放一组数 这两种内存开辟方式都是静态的&#…

2023年山东省安全员C证证考试题库及山东省安全员C证试题解析

题库来源:安全生产模拟考试一点通公众号小程序 2023年山东省安全员C证证考试题库及山东省安全员C证试题解析是安全生产模拟考试一点通结合(安监局)特种作业人员操作证考试大纲和(质检局)特种设备作业人员上岗证考试大…

人脸识别:FaceSDK 8.1 Crack

FaceSDK 使 Microsoft Visual C、C#、Objective C、Swift、Java、VB、Delphi 和 Python 开发人员能够为 Web、Windows、Linux、macOS、iOS 和 Android 构建具有人脸识别和基于人脸的 32 位和 64 位应用程序生物特征识别功能 FaceSDK 用于数百个应用程序,用于通过网络…

极大似然估计概念的理解——统计学习方法

目录 1.最大似然估计的概念的理解1 2.最大似然估计的概念的理解2 3.最大似然估计的概念的理解3 4.例子 1.最大似然估计的概念的理解1 最大似然估计是一种概率论在统计学上的概念,是参数估计的一种方法。给定观测数据来评估模型参数。也就是模型已知,参…

Flutter项目安装到Android手机一直显示在assembledebug

问题 Flutter项目安装到Android手机一直显示在assembledebug 原因 网络不好,gradle依赖下载不下来 解决方案 修改如下的文件 gradle-wrapper.properties 使用腾讯提供的gradle镜像下载 distributionUrlhttps://mirrors.cloud.tencent.com/gradle/gradle-7.5…