3.19 makefile用法及变量(自定义变量、自动变量、隐含变量)

news2025/1/12 12:02:57

目录

makefile概述

 makefile创建变量的目的

自定义变量

makefile变量的赋值

自动变量

makefile隐含变量


makefile概述

makefile重要性

会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力

make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。

“自动化编译”:一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率 提升编译效率:再次编译,只编译修改的文件

target... : prerequisites ...

      command

target也就是一个目标文件,可以是Object File,也可以是执行文件。还可以是一个标签(Label),对于标签这种特性,在后续的“伪目标”章节中会有叙述。

prerequisites就是,要生成那个target所需要的文件或是目标。

command也就是make需要执行的命令。(任意的Shell命令)

 makefile创建变量的目的

 用来代替一个文本字符串:

1.系列文件的名字

2. 传递给编译器的参数

3. 需要运行的程序

4. 需要查找源代码的目录

5. 你需要输出信息的目录

6. 你想做的其它事情。     

自定义变量

x = a               变量在声明时需要给予初值

$(x)或${x}       取值

如果你要使用真实的 $ 字符,那么你需要用 $$ 来表示。

makefile变量的赋值

符号

作用

是最基本的赋值方式,与在文中位置无关,系统自动推导将最终的赋值作为该变量的值。

?=   

 作用是当某变量前面已经定义赋值过,则不执行本次定义赋值,否则执行本次赋值

:=  

是覆盖式赋值,假如某变量在前面已经定义赋值过,则将本次赋值作为最新的变量值

+=   

  追加赋值,旧值保持不变,将新值黏贴到旧值后面

自动变量

$*      不包含扩展名的目标文件名称

$+      所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件

$<       第一个依赖文件的名称

$?       所有时间戳比目标文件晚的的依赖文件,并以空格分开

$@       目标文件的完整名称

$^       所有不重复的目标依赖文件,以空格分开

$%       如果目标是归档成员,则该变量表示目标的归档成员名称

makefile隐含变量

AR     库文件维护程序的名称,默认值为ar。

AS     汇编程序的名称,默认值为as。

CC     C编译器的名称,默认值为cc。

CPP   C预编译器的名称,默认值为$(CC)  –E。

CXX    C++ 编译器的名称,默认值为g++。

FC     FORTRAN编译器的名称,默认值为f77

RM     文件删除程序的名称,默认值为rm -f

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

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

相关文章

Docker高频使用命令总结(镜像与容器命令)

目录 一.Docker常用命令总结 1.镜像命令管理 2.容器命令管理 二.Docker镜像操作命令 1.docker search&#xff1a;搜索镜像 2.docker pull&#xff1a;下载镜像 3.docker push&#xff1a;上传镜像 4.docker images&#xff1a;查看本地镜像 5.docker inspect &#x…

全球最大蒸馏体量干邑集团,邀请酣客老王讲授产品设计大师课

酒作为文化符号,寄托着全人类的精神追求,与历史、艺术为伍,充当着国际间友好交流的使者。为了弘扬中国白酒文化,把品质卓越的中国酱酒带到全世界,也为了给中国的烈酒爱好者讲清中外烈酒之间的工艺与文化差异,酣客君丰发起了“中国酱酒世界行”,不远万里探访欧洲各国名酒产区,一…

Flutter学习之旅 -网格布局

GridView列表三种形式 可以通过GridView.count实现网格布局 /* 格式: GridView.count(crossAxisCount: 一行显示数量,children: [component(),...],) */ class MyHomePage extends StatelessWidget {const MyHomePage({Key? key}) : super(key: key);overrideWidget build(B…

如何利用问卷工具助力活动开展,实现高效数据收集?

问卷调查是一种常用的活动开展方式&#xff0c;它可以帮助我们更好地了解参与者的需求和意见&#xff0c;为活动的开展提供有力的参考和依据。 1、了解期望和需求&#xff1a;在活动中&#xff0c;我们可以事先通过问卷调查了解参与者的需求、意见、对活动的需求和期望&#x…

PCB制板之前的DFM分析

PCB制板之前的DFM分析 1.华秋DFM分析2.AD18输出IPC文件3.华秋DFM分析开短路 1.华秋DFM分析 1.打开华秋DFM软件&#xff0c;目前先用这软件做DFM分析&#xff0c;主要是简单容易上手操作&#xff0c;并且分析完成之后可以一键下单。 2.将输出的gerber文件导入华秋DFM这个软件…

ubuntu18.04 + 3060 安装测试

分区 在这里&#xff0c;我们进行手动分区&#xff0c;假设你留出的空闲分区为 80G&#xff0c;点击空闲盘符&#xff0c;点击""进行分区&#xff0c;如下&#xff1a; 1&#xff09;efi&#xff1a;如果是单硬盘&#xff0c;在唯一的一个空闲分区上添加&#xff0…

为项目创建Qframework!

liangxiegame/QFramework: Unity3D System Design Architecture (github.com) 下载这个download 在unity中打开&#xff01; 就可以啦 ———— 这里总结一下UI和自动脚本两个非常常用的功能&#xff1a; UI https://www.bilibili.com/video/BV1QK411m7g4/?spm_id_from…

美格智能发布基于高通QCS8550处理器的高算力AI模组SNM970,定义未来终端新体验

近日&#xff0c;全球领先的无线通信模组及解决方案提供商美格智能发布了高算力AI模组SNM970。该产品是行业首批基于高通QCS8550处理器开发的AI模组产品&#xff0c;并凭借卓越的8核高通Kryo™ CPU、综合AI算力高达48Tops、支持Wi-Fi 7等特性&#xff0c;助力将运算效能和灵活性…

【Go Web开发】Web初识、RESTful架构和RESTful API详解、Gin框架的安装和简单使用

博主简介&#xff1a;努力学习的大一在校计算机专业学生&#xff0c;热爱学习和创作。目前在学习和分享&#xff1a;数据结构、Go&#xff0c;Java等相关知识。博主主页&#xff1a; 是瑶瑶子啦所属专栏: Go语言核心编程近期目标&#xff1a;写好专栏的每一篇文章 文章目录 一、…

YonLinker连接集成平台构建新一代产业互联根基

近日&#xff0c;由用友公司主办的“2023用友BIP技术大会“在用友产业园&#xff08;北京&#xff09;盛大召开&#xff0c;用友介绍了更懂企业业务的用友BIP-iuap平台&#xff0c;并发布了全面数智化能力体系&#xff0c;助力企业升级数智化底座&#xff0c;加强加速数智化推进…

入门机器学习,华盛顿大学4个案例分享

机器学习是一门从数据中研究算法的多领域交叉学科&#xff0c;研究计算机如何模拟或实现人类的学习行为。现在&#xff0c;我们可以看到很多机器学习的实际应用&#xff0c;例如语音搜索技术、图像识别、自动翻译、自动驾驶汽车等。机器学习已经成为许多行业的焦点&#xff0c;…

【学习笔记】GeoServer——使用Java发布图层(SHP文件和DB数据库),附自用工具类

文章目录 SHP文件发布逻辑 1、获取到geoserver的manager对象2、调用createWorkArea方法&#xff0c;参入manager&#xff0c;创建空间空间 workArea3、调用createShpDataPool方法&#xff0c;创建数据存储4、发布样式Style.5、发布图层 调用业务层库发布shp文件图层业务逻辑如下…

Ambari 2.7.5+HDP3.1.5离线扩容不同配置组

确保ambari server节点启动&#xff0c;Httpd 服务安装并启动&#xff0c;可参考&#xff1a; Ambari 2.7.5HDP3.1.5离线安装详细教程&#xff08;附安装包&#xff09;https://blog.csdn.net/QYmufeng/article/details/122827261 1.安装ambari agent 在需要添加的主机上安装…

吴恩达与OpenAI官方合作的ChatGPT提示工程课程笔记

吴恩达与OpenAI官方合作的ChatGPT提示工程课程笔记 &#x1f978; 下述代码均在煮皮特上运行喔 LLMs(large language models) Base LLM&#xff1a;基于文本训练数据来预测做“文字接龙” Instruction Tuned LLM&#xff08;指令调整型LLM&#xff09;:接受了遵循指示的培训&am…

SpringBoot 集成 RocketMQ

项目地址 前面我们介绍了怎么使用 docker 安装 rocketMQ&#xff0c;现在我们就来试试使用 SpringBoot 集成之后&#xff0c;怎么发送消息和消费消息。 集成步骤 工程结构 第一步&#xff1a;引入相关依赖 <dependency><groupId>org.projectlombok</groupId…

【新星计划-2023】什么是OSI七层模型?一文带你了解

一、什么是OSI七层模型 OSI七层模型又叫做“OSI参考模型”&#xff0c;它的全称为“开放系统互连参考模型”&#xff0c;它是一个七层的、抽象的模型体&#xff0c;不仅包括一系列抽象的术语或概念&#xff0c;也包括具体的协议。那么为什么会出现OSI参考模型&#xff1f; 原…

第 6 章 整合 Phoenix

6.1 Phoenix 简介 6.1.1 Phoenix 定义 Phoenix 是 HBase 的开源 SQL 皮肤。可以使用标准 JDBC API 代替 HBase 客户端 API 来创建表&#xff0c;插入数据和查询 HBase 数据。 6.1.2 为什么使用 Phoenix 官方给的解释为&#xff1a;在 Client 和 HBase 之间放一个 Phoenix 中…

WatchGuard 防火墙策略、配置和日志分析器

获取 Internet 活动见解并及时了解安全事件是一项具有挑战性的任务&#xff0c;因为安全设备会生成大量的安全和流量日志。Firewall Analyzer 针对 WatchGuard 防火墙设备的报告功能具有一系列功能&#xff0c;使您能够增强网络安全。WatchGuard 日志分析器软件&#xff0c;可让…

【推荐】网络安全10本入门必看书籍

前言 对于初学者来说&#xff0c;了解网络安全的入门知识是非常重要的。以下是我推荐的10本入门网络安全必看的书籍 1.《黑客攻防技术宝典》 作者&#xff1a;余洪涛&#xff0c;出版社&#xff1a;清华大学出版社 这本书是网络安全初学者入门的好选择。书中讲解了黑客攻击和…

尚硅谷大数据技术Spark教程-笔记06【SparkCore(案例实操,电商网站)】

视频地址&#xff1a;尚硅谷大数据Spark教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据技术Spark教程-笔记01【SparkCore&#xff08;概述、快速上手、运行环境、运行架构&#xff09;】尚硅谷大数据技术Spark教程-笔记02【SparkCore&#xff08;核心编程&#xff0c;RDD-核…