Linux下make和makefile的使用方法

news2024/11/27 12:29:26

1.make和makefile的区别

        make是指令,makefile是文件,这是两者的却别。两者搭配使用,完成项目自动化创建。

2.make原理

        make是如何工作的,也就是在默认情况下,我们只输入make命令,那么

        1.make会在当前目录下寻找叫makefile或Makefile的文件,如果找到,则会执行其目标文件,进行工作,如果没有找到,或者找到的目标源文件没有被更新,就是目标文件已经被生成为可执行文件的情况下,源文件没有更新。他就会执行后面所定义的命令来生成文件。

        2.如果源文件所依赖的目标文件不存在,那么make会在当前文件找寻目标为.o文件的依赖性,如果找到,则根据找到的文件生成可执行文件。(这一过程有点像堆栈过程)。

        3.make会一层一层的去找文件的依赖性,知道编译出第一个文件目标。

        4.在找寻的过程中,如果出现错误,比如最后被依赖的文件找不到,那么make就会直接退出,并报错,而对于所定义的命令的错误,或是编译不成功,make根本不理。make只管文件的依赖性,即,如果在我找了依赖关系之后,冒号后面的文件还是不在,那么对不起,我就不工作啦。

3.make和makefile的使用

看代码:C++代码

  1 #include <iostream>                                                                                                                          
  2 using namespace std;
  3 int main()
  4 {
  5     for(int i=0;i<10;i++)
  6     {
  7         cout<<"Hello Linux"<<endl;
  8     }
  9     return 0;
 10 }

makefile文件的代码

1 text :text.cpp
  2         g++ -o text text.cpp 
  3 .PHONY:clean
  4 clear:
  5         rm -rf text    

这样就可以直接生成可执行文件,直接执行一个工程文件。比如上面代码的结果:

[SSS@iZbp157c5bomu42m2cyllwZ ~]$ make
make: `text' is up to date.
[SSS@iZbp157c5bomu42m2cyllwZ ~]$ make clear
rm -rf text

4.项目清理

1.工程师需要被清理的

2.像clear这样,如果没有被第一个文件直接或间接关联,那么她所定义的文件不会被执行,只有使用make clear指令才能清理目标文件,以便重新编译。

3.所以,我们一般将clear这样的命令设置为伪目标,以便每次都执行,用PHONY来修饰。

5.关于makefile的的特殊符号的应用

  1 text :text.cpp
  2         @g++ -o $@ $^ //最前面的@代表不显示make之后的结果,后面的$@代表第一行:左边的生成文件,¥^代表:右边的内容                                                                                                                      
  3 .PHONY:clean                               
  4 clear:                                     
  5         @rm -rf text  

 结果如下:

 所以,使用特殊符号可以简化内容

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

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

相关文章

Python基础:函数和函数式编程

文章目录 函数和函数式编程函数函数式编程 函数和函数式编程 函数 声明函数&#xff1a; def hello():print("hello function!")调用函数&#xff1a; # 使用()调用 hello()#output:hello function!# 没有()&#xff0c;则不进行调用&#xff0c;一切皆是对象&am…

Spring + Spring MVC + MyBatis+Bootstrap+Mysql酒店管理系统源码

IDEASpring Spring MVC MyBatisBootstrapMysql酒店管理系统源码 一、系统介绍1.环境配置 二、系统展示1. 管理员登录2.会员信息管理3.客房信息类型管理4.客房信息管理5.客房信息添加6.预定信息管理7.入住信息管理8.入住信息添加 三、部分代码UserMapper.javaUserController.j…

MySQl数据库第四课-------------努力------努力------努力

作者前言 欢迎小可爱们前来借鉴我的gtiee秦老大大 (qin-laoda) - Gitee.com —————————————————————————————————— 目录 sudo whoami who exit reboot、shutdown 软件安装 编辑器vim ————————————————————————…

9.2.2 【Linux】按键说明

第一部份&#xff1a;一般指令模式可用的按钮说明&#xff0c;光标移动、复制贴上、搜寻取代等 第二部份&#xff1a;一般指令模式切换到编辑模式的可用的按钮说明 第三部份&#xff1a;一般指令模式切换到命令行界面的可用按钮说明

公网远程连接Redis数据库「内网穿透」

文章目录 1. Linux(centos8)安装redis数据库2. 配置redis数据库3. 内网穿透3.1 安装cpolar内网穿透3.2 创建隧道映射本地端口 4. 配置固定TCP端口地址4.1 保留一个固定tcp地址4.2 配置固定TCP地址4.3 使用固定的tcp地址连接 转载自cpolar极点云文章&#xff1a;公网远程连接Red…

Python_列表比较大小

比较原理 从第一个元素顺序开始比较&#xff0c;如果相等&#xff0c;则继续&#xff0c;返回第一个不相等元素得比较结果。如果所有元素比较均相等&#xff0c;则长的列表大&#xff0c;一样长则两列表相等。 示例 a [5, 6, 3] b [5, 4, 3, 1] # 返回第1个不相等同位元素…

计算机图形硬件(二) 5 - 3 图形工作站和观察系统、输入设备

1 图形工作站和观察系统 目前&#xff0c;大多数图形监视器以光栅扫描显示的方式工作&#xff0c;一般使用 CRT或平板系统。图形系统的范围从小型通用计算机系统到多监视器及超大幅面观察屏幕。个人计算机的屏幕分辨率从640x480到1280x1024屏幕对角线从12英寸到21英寸。多数通…

基于STM32的300W无刷直流电机驱动方案

如何驱动无刷电机&#xff1f; 近些年&#xff0c;由于无刷直流电机大规模的研发和技术的逐渐成熟&#xff0c;已逐步成为工业用电机的发展主流。围绕降低生产成本和提高运行效率&#xff0c;各大厂商也提供不同型号的电机以满足不同驱动系统的需求。现阶段已经在纺织、冶金、…

【macOS 系列】下载brew或其他依赖包提示连接超时的问题解决

在下载brew或其他依赖包提示连接超时 错误信息&#xff1a; curl: (7) Failed to connect to [raw.githubusercontent.com](http://raw.githubusercontent.com/) port 443 after 34 ms: Connection refused最简单的方式&#xff0c;就是修改DNS&#xff1a;为114.114.114.114…

网络互联设备(集线器、交换机、路由器)

文章目录 一、中继器和集线器二、网桥和交换机1&#xff09;交换机的三种转发方式2&#xff09;交换机的分类3&#xff09;交换机互连方式 三、路由及路由器1&#xff09;路由器的作用2&#xff09;路由器的逻辑结构3&#xff09;路由器的硬件组成4&#xff09;路由器启动过程 …

【遍历】LeetCode二叉树的遍历、深度系列

文章目录 LeetCode题号104. 二叉树的最大深度111. 二叉树的最小深度144. 94. 二叉树的前序、中序遍历&#xff08;DFS遍历&#xff09;589. 589. N 叉树的前、后序遍历543. 二叉树的直径102. 二叉树的层序遍历 LeetCode题号 简单 104. 二叉树的最大深度&#xff08;DFS遍历法分…

C# RotationDetector 图片旋转角度检测

效果 项目 VS2022.net4.8 OpenCvSharp4Sdcb.RotationDetector 代码 using OpenCvSharp; using Sdcb.RotationDetector; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using …

项目设计集合(人工智能方向):助力新人快速实战掌握技能、自主完成项目设计升级,提升自身的硬实力(不仅限NLP、知识图谱、计算机视觉等领域)

优质项目专栏&#xff1a;提升自身的硬实力&#xff1a;汇总有意义的项目设计集合&#xff0c;助力新人快速实战掌握技能&#xff0c;助力用户更好利用 CSDN 平台&#xff0c;自主完成项目设计升级&#xff0c;提升自身的硬实力。 专栏订阅&#xff1a;项目大全提升自身的硬实力…

2023MWC精彩回顾 | 未来数字世界中的社交,游戏与娱乐

6月28日至6月30日&#xff0c;由GSMA主办的2023 MWC 上海世界移动通信大会&#xff08;简称“MWC 上海”&#xff09;启幕。「Paraverse平行云」参与组织并主持了本次大会中【未来数字世界中的社交&#xff0c;游戏与娱乐】的主题会议。 「Paraverse平行云」携手上海交通大学、…

中国物流,驶入大航海时代

出海的一体化&#xff0c;不仅仅是物流的一体化&#xff0c;更是产业链、供应链的一体化。在诸多问题下&#xff0c;想要帮助企业更好地出海&#xff0c;就不能只专注于自身的长板&#xff0c;而是需要先补齐短板。 作者|斗斗 编辑|皮爷 出品|产业家 出海时代真的要来了。…

CSAPP fall2015 深入理解计算机系统 lab1 datalab详解

Data Lab data lab 数据实验 这个数据实验请在linux机器上面运行&#xff0c;实测mac m1本跑不起来。windows没试过。 centos上需要安装好gcc运行环境。 如果跑不起来记得安装下面这个东西&#xff1a; yum -y install glibc-devel.i686 运行make btest的时候可能会有warni…

药物设计学笔记:导论篇

笔记来自《药物设计学》 文章目录 1.药物设计概述 1.药物设计概述 药品&#xff08;medicine&#xff09; 药物&#xff08;durg&#xff09; 辅料&#xff0c;药物是研究对象 留意 medicine 和 drug 的区别 药物来源包括天然来源和人工来源&#xff0c;前者如吗啡&#xff0…

Oracle数据库软件安装与卸载

Oracle数据库软件安装与卸载 实验目的及要求 学习Oracle12c数据库服务器软件和客户端软件的安 装与卸载,掌握客户端服务名的设置,建立客户端与服务器的网络连接,熟悉windows操作系统中Oracle相关服务的操作。理解数据库管理的基本架构。 &#xff08;1&#xff09;熟悉Oracle…

网讯wx1860接yt8521phy千兆网口调试

问题描述&#xff1a;网讯1860接yt8521phy出一路电口和3路光口都不通。 问题分析&#xff1a;影响网口不通一般有三个因素导致&#xff1a;固件、驱动、硬件。 固件&#xff1a;对于网口不通一般先确认固件是否烧写正确&#xff0c;咨询网讯FAE后将固件更新为&#xff1a;SF4…

人物建模软件是一种通过计算机技术和人工智能算法将真实人物可视化的创新工具

这种软件可以将现实中的人物形象转化为数字模型&#xff0c;使其在虚拟世界中栩栩如生。使用人物建模软件&#xff0c;用户可以轻松地创建自己或其他人的数字化人物形象&#xff0c;并赋予其丰富的人工智能功能。 人物建模软件具备高度的灵活性和逼真的效果。它可以通过多种方…