解读makefile中的.PHONY

news2024/11/26 6:50:43

在这里插入图片描述
在 Makefile 中,.PHONY 是一个特殊的目标,用于声明伪目标(phony target)。伪目标是指并不代表实际构建结果的目标,而是用来触发特定动作或命令的标识。通常情况下,.PHONY 会被用来声明一组需要执行的动作,例如 clean、all 等,并告诉 Make 工具这些目标并不对应真实的文件,而只是动作的名称。

例如,下面是一个使用 .PHONY 的例子:

makefile

.PHONY: clean

clean:
    rm -f *.o

在这个例子中,.PHONY 声明了 clean 是一个伪目标,它不代表一个真实的文件,而是用来触发清理操作的动作。当用户执行 make clean 时,Make 工具会执行 rm -f *.o 命令来删除所有的 .o 文件,即使没有真实的 clean 文件存在。

使用 .PHONY 声明伪目标可以避免因为存在同名文件而导致意外的行为,同时也能让 Make 工具知道这些目标并不对应真实文件,从而正确地执行相应的动作。

避免与同名文件产生冲突:如果存在一个与目标同名的文件,且用户误输入了该目标名字,Make 工具会尝试去构建这个同名文件,而不是执行我们期望的动作。通过将目标声明为伪目标,可以避免意外地触发同名文件的构建。
在这里插入图片描述

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

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

相关文章

利用迭代方法求解线性方程组(Matlab)

一、问题描述 利用迭代方法求解线性方程组。 二、实验目的 掌握Jacobi 方法和Gauss-Seidel 方法的原理,能够编写代码实现两种迭代方法;能够利用代码分析线性方程组求解中的误差情况。 三、实验内容及要求 用代码实现:对下列方程中重新组织…

@ConfigurationProperties结合Nacos配置动态刷新之底层原理分析

Hello,我是大都督周瑜,本文给大家分析一下ConfigurationProperties结合Nacos配置动态刷新的底层原理,记得点赞、关注、分享哦! 公众号:IT周瑜 应用背景 假如在Nacos中有Data ID为common.yml的配置项: m…

Pytorch 1.9.0环境安装

pytorch官方链接: https://pytorch.org/get-started/previous-versions/ 安装指令:conda install pytorch1.9.0 torchvision0.10.0 torchaudio0.9.0 cudatoolkit11.3 -c pytorch -c conda-forge 报错:Solving environment: unsuccessful initial attemp…

「Python Socket超能力:网络世界的隐形斗篷!」

Hi,我是阿佑,今天将带领大家揭开Python Socket编程的神秘面纱,赋予我们的网络应用隐形斗篷般的超能力! 深入探讨Socket编程的革命性力量,教你如何用Python的Socket模块来构建强大的网络应用。从简单的HTTP服务器到复杂…

高效编写大模型 Prompt 提示词,解锁 AI 无限创意潜能

随着 ChatGPT 的出现,AI 成为新的焦点,有人说过“未来 50%的工作将是提示词工作”,目前很多公司也在开始招聘 Prompt 提示词工程师。Prompt(提示词)成为了连接创意与技术的桥梁,它不仅是简单的指令&#xf…

Grafana详解

目录 ​编辑 一、Grafana的主要特点 二、Grafana的基本功能 三、Grafana的使用方法 Grafana是一款开源的数据可视化工具,主要用于大规模指标数据的可视化展现。下面将详细介绍Grafana的特点、功能以及基本使用方法。 一、Grafana的主要特点 跨平台性&#xff…

在Ubuntu系统中使用Systemctl添加启动项的详细指南

在Ubuntu系统中使用Systemctl添加启动项的详细指南 在Ubuntu系统中,systemctl 是管理systemd服务的主要工具。通过它,你可以添加、启动、停止、重启、启用和禁用服务。 什么是Systemctl? systemctl 是一个用于管理systemd系统和服务管理器…

【每日刷题】Day50

【每日刷题】Day50 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 654. 最大二叉树 - 力扣(LeetCode) 2. 119. 杨辉三角 II - 力扣&#xff08…

Vue:快速上手

一、简介 Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。无论是简单还是复杂的界面,…

vue3-api之provide与inject

传值&#xff1a; 父组件 > 子组件 > 孙组件 // 父组件 <template><div class"app"><h3>我是app组件(祖) --- {{ name }} {{ price }}</h3><child /></div> </template><script> import { reactive, toRefs,…

第二证券股市行情:未来钢铁行业产业格局有望稳中趋好

机构指出&#xff0c;未来钢铁职业工业格式有望稳中趋好&#xff0c;叠加当时部分公司现已处于价值低估区域&#xff0c;现阶段仍具结构性出资机遇&#xff0c;尤其是拥有较高毛利率水平的优特钢企业和本钱管控力度强、具有规模效应的龙头钢企&#xff0c;未来存在估值修复的时…

大模型主流 RAG 框架TOP10

节前&#xff0c;我们组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。 总结链接…

MySQL--复合查询

之前学过了基本的查询&#xff0c;虽然已经够80%的使用场景了&#xff0c;但是依旧需要了解剩下的20%。 一、多表笛卡尔积&#xff08;多表查询&#xff09; 以前我们使用基本查询的时候&#xff0c;from后面就跟一张表名&#xff0c;在多表查询这里&#xff0c;from后面可以跟…

BUUCTF:Misc 解析(七)

前言 Buuctf Web 是一个在线安全挑战平台&#xff0c;旨在提高参与者对网络安全的理解和实践能力。本文将详细介绍 Buuctf Web 的特点、挑战和机遇&#xff0c;帮助读者更好地了解这一领域。 一、Buuctf Web 的特点 多样化的挑战场景&#xff1a;Buuctf Web 提供了多种挑战场…

SCI一区 | Matlab实现PSO-TCN-LSTM-Attention粒子群算法优化时间卷积长短期记忆神经网络融合注意力机制多变量时间序列预测

SCI一区 | Matlab实现PSO-TCN-LSTM-Attention粒子群算法优化时间卷积长短期记忆神经网络融合注意力机制多变量时间序列预测 目录 SCI一区 | Matlab实现PSO-TCN-LSTM-Attention粒子群算法优化时间卷积长短期记忆神经网络融合注意力机制多变量时间序列预测预测效果基本介绍程序设…

Transformer模型架构笔记

0. 简介 Transformer是一种用于自然语言处理&#xff08;NLP&#xff09;和其他序列到序列&#xff08;sequence-to-sequence&#xff09;任务的深度学习模型架构&#xff0c;它在2017年由Vaswani等人首次提出。Transformer架构引入了自注意力机制&#xff08;self-attention …

大规模语言模型的书籍分享

在当今人工智能领域&#xff0c;大规模语言模型成为了研究和应用的热点之一。它们以其大规模的参数和强大的性能表现&#xff0c;推动着机器学习和深度学习技术的发展。对于GPT 系列大规模语言模型的发展历程&#xff0c;有两点令人印象深刻。 第一点是可拓展的训练架构与学习范…

所以研究生有不变胖的吗?

天天吃 记得和骏骏一样减肥 分享昨天无人机拍的照片

dubbo复习:(10)使用tripple协议进行通信

一、pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.…

开源与闭源:AI大模型发展路径的博弈

一、引言 在人工智能&#xff08;AI&#xff09;领域&#xff0c;大模型以其卓越的性能和广泛的应用前景&#xff0c;成为了近年来技术发展的热点。然而&#xff0c;在大模型的发展路径上&#xff0c;开源与闭源两种模式一直存在着激烈的博弈。本文将深入探讨这两种模式在大模…