热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

终极目标_makefile文件详解

篇首语:本文由编程笔记#小编为大家整理,主要介绍了makefile文件详解相关的知识,希望对你有一定的参考价值。1.1个规则

篇首语:本文由编程笔记#小编为大家整理,主要介绍了makefile文件详解相关的知识,希望对你有一定的参考价值。



1.1个规则

目标:依赖条件
命令(命令前有一个tab的缩进)

makefile文件详解_后缀

终极目标一般写在第一行,不然make会把第一行当作终极目标,比如你的第一行是add.o:add.c,就会把它当成终极目标,只执行gcc -c add.c -o add.o就结束了,这时候只需要在开头加上all(All):a.out,或者在make的时候加上你的终极目标。

  • 如果想生成目标,检查规则中的依赖条件是否存在,如果不存在,则寻找是否有规则用来生成该依赖文件。
  • 检查规则中的目标是否需要更新,必须先检查它的所有依赖,依赖中有任意一个被更新,则目标必须更新。

2.2个函数

  • src=$(wildcard *.c) ​找到当前目录下所有后缀为.c的文件,赋值给src
  • obj=$(patsubst %.c,%.o,$(src))​把src变量里所有后缀为.c的文件替换为.o,将参数3中,包含参数1的部分,替换为参数2

makefile文件详解_赋值_02

clean没有依赖,rm前加-,作用是删除不存在文件时,不报错,顺序执行结束

3.个自动变量

  • $@:在规则的命令中,表示规则中的目标
  • $^:表示规则的命令中,表示所有的依赖条件
  • $<:表示规则的命令当中,表示第一个依赖条件,如果将该变量应用在模式规则中,它将依赖条件列表
  • 依次取出,套用模式规则。

makefile文件详解_后缀_03

make clean -n 可以查看你删的对不对

makefile文件详解_文件名_04

4.模式规则

%.o:%.c

     gcc -c $<-o %@

静态模式规则

$(obj)%.o:%.c

      gcc -c $<-o %

5.伪目标

.PHONY:clean ALL

makefile文件详解_赋值_05

当.c和.0及.h分别再src、obj、inc等目录下时

makefile文件详解_文件名_06

  • 一般命名 makefile 或者 Makefile,直接使用make命令
  • 如果命名为其他名字,可以使用make -f 文件名 -f:指定文件执行make命令

推荐阅读
  • iTOP4412开发板QtE5.7源码编译指南
    本文详细介绍了如何在iTOP4412开发板上编译QtE5.7源码,包括所需文件的位置、编译器设置、触摸库编译以及QtE5.7的完整编译流程。 ... [详细]
  • 本文介绍了在Makefile及Android.mk文件中添加打印输出信息的方法,并详细解析了Android编译过程中的关键步骤,包括环境变量的设置与编译脚本的执行。 ... [详细]
  • 本文将探讨如何在一个目录下针对多个源文件编写高效的Makefile,通过实例介绍从基础到高级的Makefile编写技巧。 ... [详细]
  • 我们正在使用GNU Make来构建我们的系统,在makefile文件的末尾,我们通过一个名为Makedepends的包含来生成一系列的.d文件。然而,当文件被删除或移动时,依赖关系会中断,我们需要寻找一种方法来优雅地处理这种情况。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文详细记录了作者从7月份的提前批到9、10月份正式批的秋招经历,包括各公司的面试流程、技术问题及HR面的常见问题。通过这次秋招,作者深刻体会到了技术积累和面试准备的重要性。 ... [详细]
  • 本文深入探讨了在安装PostgreSQL数据库系统时,执行Configure、Make及Make Install命令的具体含义与作用。 ... [详细]
  • QEMU环境下加载首个Linux驱动模块
    本文介绍了如何在Ubuntu 20.04系统上使用QEMU虚拟机加载一个简单的Linux驱动模块。此过程涉及Linux内核4.0版本的配置与编译。 ... [详细]
  • 深入探讨Web服务器与动态语言的交互机制:CGI、FastCGI与PHP-FPM
    本文详细解析了Web服务器(如Apache、Nginx等)与动态语言(如PHP)之间通过CGI、FastCGI及PHP-FPM进行交互的具体过程,旨在帮助开发者更好地理解这些技术背后的原理。 ... [详细]
  • C基本语法C程序可以定义为对象的集合,这些对象通过调用彼此的方法进行交互。现在让我们简要地看一下什么是类、对象,方法、即时变量。对象-对象具有状态和行为 ... [详细]
  • 如何在Notepad++中执行Python代码
    Notepad++是一款功能丰富的文本编辑器,不仅支持多种编程语言的语法高亮显示,还提供了便捷的代码执行功能。本文将详细介绍如何在Notepad++中配置并运行Python代码。 ... [详细]
  • Pro*C访问Oracle数据库的例子test.pc$cattest.pc#includeEXECSQLINCLUDESQLCA;EXECSQLBEGINDECLARESECTIO ... [详细]
  • OpenWrt 是一款高度可定制的嵌入式 Linux 发行版,广泛应用于无线路由器等领域,拥有超过百个预装软件包。本文详细探讨如何在 OpenWrt 上通过 Luci 构建自定义模块,以扩展其功能。 ... [详细]
  • 本文详细记录了在Ubuntu 9.10操作系统上从零开始搭建LAMP(Linux, Apache, MySQL, PHP)环境的过程,包括遇到的问题及解决方案。旨在为初次尝试搭建LAMP环境的开发者提供参考。 ... [详细]
author-avatar
mobiledu2502911457
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有