多目标规则在 Makefile 中的应用与示例

2023-05-16

在 Makefile 中,如果一个规则有多个目标,而且它们之间用空格分隔,我们称之为"多目标规则"。这意味着这个规则适用于列出的所有目标。

在目标下面的命令是“-C $@”,它通常与 make 命令关联在一起。它的作用如下:

  1. -C:这个参数告诉 make 在读取 Makefiles 或执行其他操作之前,先切换到指定的目录。如果指定了多个 -C 选项,那么每个选项都是相对于前一个选项解释的,例如:-C / -C etc 相当于 -C /etc

  2. $@:这是 Makefiles 中的一个特殊变量,表示当前正在构建的目标的名称。在多目标规则的情况下,当构建时,$@ 会获取每个目标的值。

所以,当执行这个规则时,make 会切换到当前目标($@)所指定的目录,然后在那个目录里执行其他指定的命令。这在你需要为多个目标在不同目录中执行相同命令的场景下非常有用。

下面是一个 Makefile 的例子,包括一个多目标规则。在这个例子中,我们有两个目标:dir1dir2。对于这两个目标,我们将使用相同的命令(make)在各自的目录中执行。

# Makefile 示例

# 多目标规则
dir1 dir2:
	@echo "当前目标: $@"
	@make -C $@

.PHONY: dir1 dir2

目录结构如下:

.
├── Makefile
├── dir1
│   └── Makefile
└── dir2
    └── Makefile

在这个例子中,每个子目录(dir1dir2)都有一个 Makefile。当我们在顶层目录运行 make 命令时,多目标规则将为每个目标执行相应的操作。

运行 make 命令的输出可能如下:

当前目标: dir1
make[1]: Entering directory 'dir1'
# 在这里输出 dir1 的 Makefile 执行结果
make[1]: Leaving directory 'dir1'
当前目标: dir2
make[1]: Entering directory 'dir2'
# 在这里输出 dir2 的 Makefile 执行结果
make[1]: Leaving directory 'dir2'

在这个例子中,-C $@ 命令告诉 make 在执行子目录中的 Makefile 之前切换到相应的目录。$@ 变量表示当前目标(dir1dir2)。这允许我们在不同目录中执行相同的命令,从而实现代码复用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

多目标规则在 Makefile 中的应用与示例 的相关文章

  • CV和NLP不分家

    嗯 xff0c 好久没有登陆csdn了 xff0c 看了一下 xff0c 距离上一篇文章发表已经过去了整整半年的时间了 xff0c 消息堆叠了将近100条 也没办法一一回复了 xff0c 因为这么长时间过去了 xff0c 不知道大家的问题都
  • 2022-09-14-openstack介绍

    1 云计算介绍 计算 xff08 CPU 内存 xff09 存储和网络是 IT 系统的三类资源 通过云计算平台 xff0c 这三类资源变成了三个资源池 当需要虚机的时候 xff0c 只需要向平台提供虚机的规格 平台会快速从三个资源池分配相应
  • docker debian中apt-get源替换为阿里源

    场景 docker容器内安装太慢 xff0c 实在受不了这速度了 解决方案 将默认的debian源替换为阿里源 cat命令 因为默认不带vim 查看源配置文件 xff1a span class token function cat span
  • Spring整合Junit

    原始Junit测试Spring的问题 在测试类中 xff0c 每个测试方法都有以下两行代码 xff1a ApplicationContext ac 61 new ClassPathXmlApplicationContext 34 bean
  • STM32驱动舵机(附例程)

    一 PWM Mode xff1a 当计数值小于CRR寄存器值时输出为有效电平 xff0c 而有效电平要根据OCXInit来设置 xff0c 设置的有效电平为高则当CNT值小于设置的CRR寄存器值时输出有效电平高电平 xff0c 当CNT值大
  • Win10下安装Anaconda后,conda不是内部或者外部命令

    今天在安装TAnaconda时 xff0c 在开始 gt 运行 gt cmd时输入如下命令 xff1a conda version 时显示出错 xff0c cuda不是内部或者外部命令 xff1b 第一直觉就是去检查环境变量 xff0c 你
  • VM16-ubuntu16桥接网络频繁掉线

    故障说明 旧电脑使用的vm15 ubuntu16 xff0c 通过移植安装到新电脑 xff0c 后又通过升级把虚拟机升级到vm16 xff0c 更改网络连接的NAT模式到桥接模式 xff0c 发现网络即使出现正常连接的图标和正确的IP地址但
  • IPTV机顶盒刷机过程--山东电信【天邑TY608】

    IPTV机顶盒刷机过程 山东电信 天邑TY608 准备工具拆机过程开始刷机 准备工具 双公头USB数据线 刷机小板 xff0c 我用的是淘宝买的USB转TTL的CH340G的小板 电烙铁 焊锡丝 焊锡膏 单排排针 拆机过程 这个型号的机顶盒
  • OpenStack Availability Zone和Aggregate Hosts理解

    1 availability zone az是在region范围内的再次切分 xff0c 只是工程上的独立 xff0c 例如可以把一个机架上的机器划分在一个az中 xff0c 划分az是为了提高容灾性和提供廉价的隔离服务 选择不同的regi
  • Mysql 根据月份分组并返回分组中的所有数据

    现有数据如下 xff1a 交易描述 金额 时间 交易A 1000 2021 01 28 交易B 2000 2021 01 30 交易C 3000 2021 02 03 交易D 4000 2021 02 04 交易E 5000 2021 02
  • 程序设计思维与实践 Week13 作业 (3/4/数据班)

    A TT 的神秘任务1 xff08 必做 xff09 这一天 xff0c TT 遇到了一个神秘人 神秘人给了两个数字 xff0c 分别表示 n 和 k xff0c 并要求 TT 给出 k 个奇偶性相同的正整数 xff0c 使得其和等于 n
  • 安装scikit-learn问题

    1 问题描述如下 xff1a pytorch root 64 cento conda install scikit learn Solving environment failed CondaHTTPError HTTP 000 CONNE
  • 火狐下setting a property that has only a getter 的错误, 真是诡异...

    刚刚遇到了个很诡异的问题 xff0c 有一段看似没有错误的js代码硬是在火狐下会报个 setting a property that has only a getter 错误 xff0c 而在其他浏览器下却可以正常运行 xff0c 代码大概
  • 最新社区版idea插件“intellij-spring-assistant”

    1 背景 idea社区版已经用了好长时间了 xff0c 其中丰富的插件库让社区版使用起来与专业版无差异 xff0c 完全能够满足当前工作需求 xff0c 但是随着版本的不断更新 xff0c 原作者已不再更新 xff0c 导致无法在新版本上使
  • VS2017/2019中默认编码问题,修改文本编码格式 为UTF-8

    1 修改VS中单个文本编码方式 VS2017 2019中默认格式为 GB2312 很多时候可能出现乱码情况 xff0c 就是编码问题 xff0c 接下来 xff0c 可以修改编码方式 xff1a 操作方法如下所示 xff1a 首先 xff0
  • 宏定义中的括号和自增自减运算(1)

    宏定义中容易引起许多运算优先级的问题 xff0c 需要用括号加以约束 例如 define abs x x gt 0 x x abs a b abs a 43 1 带入展开后 xff0c 结果如下 xff1a a b gt 0 a b a b
  • K-means算法

    算法描述 xff1a 1 gt 从N个数据中选出K个元素作为质心 xff0c 即数据将被分成K簇 2 gt 依次计算剩下的每一个元素到K个元素的相异度 xff0c 一般是计算距离 xff0c 将这些元素分别划分到相异度最低的簇中去 3 gt
  • 编程领域中的事务概念解析

    在编程领域 xff0c 事务 xff08 Transaction xff09 是一个非常重要的概念 它可以帮助我们处理分布式系统中的并发问题 保证数据的一致性和完整性 本文将详细解释事务的概念及其在编程中的应用 一 什么是事务 xff1f
  • C++流概述

    C 43 43 流概述 在程序设计中 xff0c 数据输入 输出 xff08 I O xff09 操作是必不可少的 xff0c C 43 43 语言的数据输入 输出操作是通过I O流库来实现的 C 43 43 中把数据之间的传输操作称为流
  • kNN(K-Nearest Neighbor)最邻近规则分类

    K最近邻分类算法 方法的思路 xff1a 如果一个样本在特征空间中的k个最相似 xff08 即特征空间中最邻近 xff09 的样本中的大多数属于这一类别 xff0c 则该样本也属于这个类别 KNN算法中 xff0c 所选择的邻居都是已经正确

随机推荐

  • SPOOLING技术

    SPOOLING技术 xff08 Simultaneous Peripheral Operating On Line 同时联机外围操作技术 xff0c 它是关于慢速字符设备 如何与计算机主机进行数据交换 的一种技术 xff0c 通常又称 假
  • Belady现象

    Belady现象 采用FIFO算法时 xff0c 如果对 个进程未分配它所要求的全部页面 xff0c 有时就会出现分配的页面数增多但缺页率反而提高的异常现象 Belady现象的描述 xff1a 一个进程P要访问M个页 OS分配N N lt
  • 计算结构体的字节数

    结构体中的成员可以是不同的数据类型 xff0c 成员按照定义时的顺序依次存储在连续的内存空间 和数组不一样的是 xff0c 结构体的大小不是所有成员大小简单的相加 xff0c 需要考虑到系统在存储结构体变量时的地址对齐问题 看下面这样的一个
  • 轻松搞定面试中的二叉树题目

    版权所有 xff0c 转载请注明出处 xff0c 谢谢 xff01 http blog csdn net walkinginthewind article details 7518888 树是一种比较重要的数据结构 xff0c 尤其是二叉树
  • 使用Anaconda Navigator无法成功创建虚拟环境问题的解决方案

    1 问题描述 使用anaconda Navigator创建虚拟环境时 xff0c 配置初始名称以及python版本 xff0c Fetching各种包成功后 xff0c 开始loading各种包的过程中闪过cmd黑色窗口 xff0c 然后左
  • QT 后台处理时间过长 主界面卡死解决办法

    之前用WPF开发 xff0c 处理逻辑就是1 xff0c 处理前显示等待窗口 xff0c 2 同步处理改未异步 xff0c 3 处理完毕后关闭等待窗口 Qt应该也是类似的处理逻辑 xff1a 一 创建等待处理窗口 xff08 采用了QMoi
  • 一圈n个人,1-3循环报数,报道3的退出,最后剩下的是几号

    import java util ArrayList import java util List import java util Scanner public class CirCle public static void main St
  • GCD【洛谷P2568】(小左的GCD)

    题目描述 给定整数N xff0c 求1 lt 61 x y lt 61 N且Gcd x y 为素数的数对 x y 有多少对 输入格式 一个整数N 输出格式 答案 输入输出样例 输入 1 复制 4 输出 1 复制 4 说明 提示 对于样例 2
  • C++中的weak_ptr深入解析

    引言 在C 43 43 的智能指针家族中 xff0c weak ptr是一种非常实用且独特的成员 它主要用于解决循环引用问题 xff0c 从而避免内存泄漏 在本文中 xff0c 我们将详细讨论weak ptr的基本概念 功能和应用场景 xf
  • 【Redis】解决WARNING overcommit_memory is set to 0 Background save may fail under low memory condition.

    问题说明 不管是linux直装 xff0c 还是在docker环境中 xff0c 启动redis时 xff0c 报如下错误 WARNING overcommit memory is set to 0 Background save may
  • 运动跟踪算法CMT(续)之层次凝聚聚类算法(HAC)

    熟悉CMT的都知道 xff0c 作者在聚类部分使用了层次凝聚聚类算法 xff08 Hierarchical Agglomerative Clustering xff09 并且使用的是单链 xff08 Single link xff09 xf
  • 使用mysql8.x版本设置远程连接

    主要步骤 xff0c 注意 xff1a 自mysql8 x版本 xff0c 密码的加密方式改为caching sha2 password 登录mysql账号修改root用户登录地址修改root用户密码加密方式 usr local mysql
  • jenkins基础配置之四:读取本地文件

    需要安装的插件 Extended Choice Parameter Plug span class token operator span In span class token operator span External Monitor
  • 初识Btrfs文件系统

    Btrfs 也有一个重要的缺点 xff0c 当 BTree 中某个节点出现错误时 xff0c 文件系统将失去该节点之下的所有的文件信息 而 ext2 3 却避免了这种被称为 错误扩散 的问题 Btrfs相关介绍 xff1a Btrfs 是一
  • 服务器使用笔记本网络连接外网

    由于服务器经常部署在机房 xff0c 并没有外网 xff0c 连不上外网 需要使用自己笔记本的网络供服务器使用 笔记本连接手机热点 xff0c 再分享给服务器 一 首先 xff0c 需要把服务器和笔记本连接到同一网络内 xff0c 可以选择
  • grafana接入openldap认证

    首先两个文件开启ldap的支持 文件1 xff1a etc grafana grafana ini auth ldap enabled 61 true config file 61 etc grafana ldap toml allow s
  • Wireshark的常见提示

    概述 本文主要介绍Wireshark中出现的一些常见提示 详细信息 Wireshark简介 Gerald Combs是堪萨斯城密苏里大学计算机科学专业的毕业生 1998年发布了第一版Ethereal工具 xff0c Ethereal工具使用
  • shell报错bad substitution 解决办法

    bin bash a 61 34 hello 34 b 61 34 hi is a 34 echo b echo a echo a echo a 1 2 执行脚本方式不同出现的结果不同 xff1a 方式1 xff1a sh shell sh
  • centos8软件安装dnf命令

    DNF是新一代的rpm软件包管理器 它首先出现在 Fedora 18 这个发行版中 而目前 xff0c 它取代了yum xff0c 正式成为从 Fedora 22 起 Fedora 版本的包管理器 DNF包管理器克服了YUM包管理器的一些瓶
  • 多目标规则在 Makefile 中的应用与示例

    在 Makefile 中 xff0c 如果一个规则有多个目标 xff0c 而且它们之间用空格分隔 xff0c 我们称之为 34 多目标规则 34 这意味着这个规则适用于列出的所有目标 在目标下面的命令是 C 64 xff0c 它通常与 ma