首页 > 其他分享 >Makefile教程(入门介绍)

Makefile教程(入门介绍)

时间:2023-06-11 19:03:31浏览次数:65  
标签:文件 教程 入门 make Makefile 编译 构建 工具

(文章目录)


前言

本篇文章将带大家学习Makefile,Makefile在文件的编译中起到重要作用,在Linux中我们也是经常使用到Makefile,下面我将会带大家学习什么是Makefile。

一、Makefile介绍

Makefile是用于自动化构建程序的一种工具,它通常被用于编译,连接以及打包程序等任务。Makefile利用了文件的时间戳,只编译被修改过的文件和和依赖这些文件的文件。这种方式能够节省时间和精力,提高开发效率。

Makefile通常采用一种类似于脚本语言的格式,其中包含了一系列的规则和命令。每个规则都是由一个目标文件,一个或多个依赖文件和一组命令组成的。命令用于告诉Make工具如何生成目标文件,它们通常以一个制表符开头。

Makefile的工作原理是基于依赖关系。每个规则都描述了一组源文件、目标文件和命令,源文件和目标文件之间是一种依赖关系。如果源文件的时间戳比目标文件更近,那么该规则就会执行。Makefile通过依赖关系和时间戳确定哪些文件需要重新生成,然后执行相关的命令,最终生成目标文件。

Makefile可以用于编译C、C++、Java等语言的程序,它可以自动地检测程序的修改,只编译修改了的文件,从而避免了不必要的编译时间。同时,它还可以自动生成文档、打包程序、安装程序等等。由于其简单易用、功能强大、灵活性高,Makefile已经成为软件开发过程中必不可少的工具之一。

二、make和Makefile的关系

make是一种自动化工具,用于构建软件工程。它可以根据Makefile文件中的规则和指令构建、编译、链接或打包程序。Makefile文件描述了构建软件的过程,因此是make工具必需的输入文件。

make工具使用Makefile文件来确定哪些文件需要重新编译、链接以及执行其他任务,以此来保证软件工程的正确构建。Makefile是make工具的指导文件,而make工具则是执行指令、实现构建过程的工具。

因此,可以说,Makefile文件是make工具的必需输入,而make工具则是执行Makefile定义的指令、生成目标文件的工具。在软件开发过程中,往往需要编写Makefile文件来构建和管理项目。

三、编写一个简单的Makefile

这里举了一个简单的Makefile例子:

all : 
	echo hello

执行make命令: 在这里插入图片描述 当输入make命令后会去执行对应的makefile文件,这个makefile文件的作用就是使用echo 将hello回显输出到终端上。

总结

本篇文章只是一个简单的开头,后面我们会一步步的讲解makefile的深入原理。

标签:文件,教程,入门,make,Makefile,编译,构建,工具
From: https://blog.51cto.com/u_16153875/6458552

相关文章

  • 软件测试|数据分析神器pandas教程(一)
    前言Python是非常适合用于数据分析的,除了Python代码简单以外,Python还有非常多的第三方库,对于数据分析有很大帮助,今天我们就介绍一下Python进行数据分析的神器——pandas。安装从2019年1月1号开始,新发布的pandas将只支持Python3版本,所以我们的教程也以python3.7为例进行演示。......
  • 软件测试|数据分析神器pandas教程(二)
    前言上一篇文章我们介绍了pandas的安装,并且写了一个简单的示例,本篇文章我们就开始学习pandas的数据结构。数据结构-SeriesPandasSeries类似表格中的一个列(column),类似于一维数组,可以保存任何数据类型。Series由索引(index)和列组成,函数如下:pandas.Series(data,index,dtyp......
  • 通过 docker-compose 快速部署 Azkaban 保姆级教程
    目录一、概述二、Azkaban的调度流程三、前期准备1)部署docker2)部署docker-compose四、创建网络五、Azkaban编排部署1)安装MySQL2)下载Azkaban编译3)初始化azkaban用户和表4)配置5)启动脚本bootstrap.sh6)构建镜像Dockerfile7)编排docker-compose.yaml8)开始部署六、简单测试验......
  • Lua 语言 15 分钟快速入门
    --单行注释--[[  [多行注释]--]]-----------1.变量&控制流----------num=23--数字都是双精度str='aspythonstring'--像Python一样不可变str="aspythonuse"--可以双引号str=[[    像Python的多行注释可用于    表示多行字符串一样 ......
  • 软件测试|web自动化测试神器playwright教程(十五)
    前言我们在日常工作中,会经常遇到弹出警告框的问题,弹框无法绕过,必须处理才可以执行后续的测试,所以弹框处理也是我们必须掌握的一个知识。弹框通常分为3种,分别为alert,confirm,promot。alert弹框:只有信息和确定按键confirm弹框:在alert弹窗基础上增加了取消按钮prompt弹框:在confirm的基......
  • 软件测试|web自动化测试神器playwright教程(十六)
    前言在我们的日常工作中,经常会遇到文件下载的事件,如下图:我们可以看到在下载文件时会弹出一个Windows对话框,我们知道,selenium只能操作web页面,无法操作Windows对话框,使用selenium时,我们可以借助autoit等工具实现该功能。playwright则可以不借助其他工具实现文件的下载。文件下载playw......
  • WPF 入门笔记 - 03 - 样式基础
    ......
  • MySQL Workbench的使用教程
        MySQLWorkbench是MySQLAB最近释放的可视数据库设计工具。这个工具是设计MySQL数据库的专用工具。MySQLWorkbench拥有很多的功能和特性;这篇由DjoniDarmawikarta写的文章通过一个示例展现了其中的一些。我们将针对一个订单系统建立一个物理数据模型,这里的订单......
  • .net framework生成Nuget包简单教程
    前言nuget包生成在.netframework和.netcore/.netstandard下的是不同的。.netframework中稍微复杂些,下面记录了我自己在.netframework中本地生成Nuget包的过程,只涉及主要步骤,更多细节参见微软官方文档。步骤1,到https://www.nuget.org/downloads下载nuget.exe,下载完我放在D......
  • Kong入门学习实践(1)基础概念快览
    最近在学习Kong网关,因此根据老习惯,我会将我的学习过程记录下来,一来体系化整理,二来作为笔记供将来翻看。由于我司会直接使用Kong企业版,学习过程中我会使用Kong开源版。什么是Kong?Kong的原意为金刚,用来形容强健、力量、坚固和稳定,可以想想电影中的金刚,也不难看出Kong的Logo是一只......