本文首次编辑时间2020.07.20

最后编辑时间2020.08.03

欢迎转载,转载请附上原文链接

参考:

GNU make说明文档:https://www.gnu.org/software/make/manual/html_node/index.html#SEC_Contents

【跟我一起写Makefile】:https://seisman.github.io/how-to-write-makefile/


前言

Makefile的撰写只是为了自动化流程,如果是Windows 程序开发者,IDE(Integrated Development Environment)已经集成好了编译工具和make工具,不需要我们再手工编写Makefile。但是在嵌入式开发中,我们都会在Linux平台上进行开发然后交叉编译,这时就需要我们自己手工完成编译过程,所以Makefile必不可少。说开又说,学习Makefile是嵌入式开发者的必经之路,也只有清楚整个项目的编译过程,才能对嵌入式开发有更好的理解。本文不适合Makefile从零开始的开发者。这里只是以图表的形式对Makefile的编写做知识归纳,也方便自己以后复习和查找相关资料。


一、解释编译和链接

以C/C++代码为例,我们编写完代码后变成可执行文件需要经过编译和链接阶段。这个过程如果在Windows下是由IDE内置的编译器和链接器完成的。但是在Unix系统我们需要自己处理这个过程。以图解表示如下

编译和链接

二、Make的工作流程

Make的工作流程

在 Makefile 中,规则的顺序是很重要的,因为,Makefile 中只应该有一个最终目标,

其它的目标都是被这个目标所连带出来的,所以一定要让 make 知道你的最终目标是什么。

一般来说,定义在 Makefile 中的目标可能会有很多,但是第一条规则中的目标将被确立为

最终的目标。如果第一条规则中的目标有很多个,那么,第一个目标会成为最终的目标。 make所完成的也就是这个目标


三、书写依赖规则

make实际上只是检查Makefile里面的依赖关系(规则),然后决定哪一条规则下面的命令会被执行。命令执行成功与否make并不管

Makefile的规则书写办法

四、书写命令

当make检查到某一条规则里,依赖文件比目标文件更新的情况时,就会执行该规则下的命令

Makefile命令的书写

五、使用变量

Makefile中的变量

使用得最多最频繁的,可能是自动化变量了

Makefile中的自动化变量

六、使用函数

字符串处理函数
文件名操作函数
逻辑类函数

makefile文件编写_九图记住Makefile相关推荐

  1. SYNOPSYS VCS Makefile文件编写与研究

    SYNOPSYS VCS Makefile文件编写与研究 这个Makefile是synopsys提供的模板,看上去非常好用,你只要按部就班提供实际项目的参数就可以了.我们来看这个文件的头部说明: ma ...

  2. 基础知识(三)makefile文件编写初级篇

    linux下进行c++开发,需要熟悉相关编译器的编译.链接命令.这边主要以实例讲解,如何在linux中,进行c++程序简单的编译链接运行. 一.单文件编译链接 这里先从最简单的单个文件编译链接为例.在 ...

  3. 简单的makefile文件编写

    习惯了windows下ide创建工程已经代码的编写,然后一键运行,很简单,因为很多事ide都帮我们做了,但是linux下不一样,需要手动编译,执行一条条的命令,一般工程都是由于很多文件组成的,比如c+ ...

  4. makefile文件编写教程

    技术交流QQ群:1027579432,欢迎你的加入! 1.make介绍 gcc:编译器(gcc根据菜谱进行编译) make: linux自带的构建器(相当于一个菜谱) 构建的规则(菜谱)在makefi ...

  5. Linux编程——入门级Makefile文件编写

    前言 1.在Linux开发环境中,编写Makefile文件是一个必须的技能,虽然现在有好多IDE可以自动生成所需要的Makefile文件,但有时能看懂Makefile文件也是更好的了解项目的编译过程. ...

  6. 从简入难makefile文件编写,Linux C++编程,简单vi命令

     1.一个最基本的C++程序 2.第二个c++程序 3.第一个入门级别的简单的makefile 4.在makefile中定义变量. 5.编写makefile的依赖 如果start:标识后面的某个. ...

  7. makefile文件编写

    makefile文件用于管理和组织代码工程的编译和链接,其不是可执行文件,其被make工具解析并完成相关动作,下面笔者将介绍makefile中常用的一些语法说明: 1.文件包含: 语法:include ...

  8. Linux C语言C++ makefile文件编写

    ps: 这里 不是很明白?尤其是 后面 三个变量,什么区别? $@ 代表目标 $^ 代表全部依赖 $< 第一个依赖 $? 第一个变化的依赖 makefile makefile 命名规则makef ...

  9. Makefile文件编写规则

    From: http://aviva.iteye.com/blog/807494 Makefile中包含五种内容:显式规则,隐式规则,变量定义,指令(directive)和注释. 1.显式规则――描述 ...

最新文章

  1. 分类算法之朴素贝叶斯分类(Naive Bayesian classification)
  2. centos7在分区上建立文件系统和挂载
  3. STC89C52RC片内资源介绍
  4. react获取state的值并更新使用
  5. spring mvc学习(33):原生apiSpring MVC过滤器-HiddenHttpMethodFilter
  6. Python外卷(8)--pdist, squareform
  7. windows 2003 英文版支持中文显示、中文输入的设置方法
  8. 分析报告生产器使用问题
  9. 学报格式和论文格式一样吗_求《浙江大学学报》的论文格式要求 - 论文投稿 - 小木虫 - 学术 科研 互动社区...
  10. 论文查重率【降重】从65%-25%的心路历程!超硬核!霸道降重!
  11. POI获取Excel单元格的值
  12. VP9编码器客观及主观质量优化
  13. 【Win10 尝试解决】Win10文件资源管理器无限挂起重启
  14. ios 配置了代理且使用 chls.pro/ssl 下载不了证书,无法弹出下载证书的提示
  15. 做自媒体如何获得更多的流量?
  16. splatter包安装
  17. spark集群详细搭建过程及遇到的问题解决(一)
  18. 方便又高效,这几款远程办公软件值得学习
  19. 新闻类客户端代码阅读笔记
  20. 买卖提将养的一缸金鱼分五次出售系统上一次卖出全部的一半加二分之一条; 第二次卖出余下的三分之一加三分之一条; 第三次卖出余下的四分之一加四分之一条; 第四次卖出余下的五分之一加五分之一条; 最后卖出余

热门文章

  1. mySQL建表允许最多多少字段?
  2. linux文件管理和 对bash的理解
  3. Jenkins执行批处理文件失败
  4. maven web项目build失败
  5. linux系统下如何禁止ping命令或允许ping命令的方法
  6. spring MVC(2)--注解Hello World
  7. 信息网络安全技术知识
  8. 华为V3.4-RIP命令总结
  9. 用Selenium自动化测试时,让ChromeDriver中不显示“正受到自动测试软件控制”
  10. Asp.Net生命周期系列三