【北京迅为】《STM32MP157开发板嵌入式开发指南》-第二十一章 makefile基本语法(下)

news2025/1/16 7:42:57

iTOP-STM32MP157开发板采用ST推出的双核cortex-A7+单核cortex-M4异构处理器,既可用Linux、又可以用于STM32单片机开发。开发板采用核心板+底板结构,主频650M、1G内存、8G存储,核心板采用工业级板对板连接器,高可靠,牢固耐用,可满足高速信号环境下使用。共240PIN,CPU功能全部引出:底板扩展接口丰富底板板载4G接口(选配)、千兆以太网、WIFI蓝牙模块HDMI、CAN、RS485、LVDS接口、温湿度传感器(选配)光环境传感器、六轴传感器、2路USB OTG、3路串口,CAMERA接口、ADC电位器、SPDIF、SDIO接口等


第二十一章 makefile基本语法(下)

本章内容对应视频讲解链接(在线观看):https://www.bilibili.com/video/BV1M7411m7wT?p=23

21.1 wildcard 函数

格式: $ (wildcard PATTENR)

功能: 展开指定的目录

举例:

在 /home/topeet/test 目录有一个 a.c 的 c 文件和一个 test的文件夹,在/home/topeet/test/test 文件夹下有一个 b.c的文件。

我们在当前目录下创建的 makefile 里面写下如下代码,echo 前面加了@ 符号,echo 这个命令就不显示:

执行结果:

我们得到了 ./a.c 和 ./test/b.c ,所以 wildcard 函数会把我们指定的 ./ 和 ./test/ 目录下的 c 文件展开。

21.2 notdir 函数

格式: $ (notdir $ (var) )

功能:去掉路径。

举例:

我们在上面的makefile 中加上以下代码,因为上面的例子我们得到的结果是 ./a.c 和 ./test/b.c 是有路径的,我们可以直接使用这个变量。

 

执行结果: 

因为 notdir 函数可以去掉路径,所以 /a.c 和 ./test/b.c 去掉路径就得到了 a.c 和 b.c

21.3 dir 函数

格式: $(dir <names...>)

功能:取出目录,这里的目录指的是最后一个反斜杠/ 之前的部分,如果没有反斜杠/就返回当前。

举例:

我们在上面的例子中加入以下代码,如下图所示:

 

因为 var2 的值为 ./a.c 和 ./test/b.c ,所以取出目录就是 ./ 和 ./test ,如下图所示: 

 

21.4 patsubst 函数

格式: $(patsubst 原文件,目标文件,文件列表)

功能:替换文件后缀

举例

我们在上面的例子中加入以下代码,如下图所示:

 

这个函数会把 var1  变量的a.c 和 b.c 的 .c 后缀替换为 .o ,如下图所示:

但是这个替换并不会改变当前目录下的后缀名。这个函数能做什么呢?我们可以用这个函数来替换我们的后缀名,进行其他的操作,这个函数都是会配合其他函数来用的。

替换我们可以使用这个函数,也可以使用 $(var:a=b) 这个格式来替换,var 代表我们要替换的文件的名字,a是原文件,b 是目标文件。我们来改一下上面的代码,如下图所示:

 

运行结果如下: 

21.5 foreach 函数

格式:$(foreach <var>,<list>,<text>)

功能:把参数<list>中的单词逐一取出放到参数<var>所指定的变量中,然后再执行<text> 所包含的表达式。每一次 <text> 会返回一个字符串

举例

因为 var2 变量的值为 ./ 和 ./test ,所以先把 ./ 取出来放在 n 变量,然后再执行 wildcard 函数取出 ./test 和 ./test 下面的c文件的路径。所以执行结果如下图所示: 

makefile基本语法规则介绍到这里基本就结束了,所讲的是后面裸机实验中所用到的一些函数,这些也是我们编写makefile最常用的。如果大家想深入了解,我们给大家提供了课外资料,在光盘里有《跟我一起写makefile》的pdf文件,大家可以了解下。 

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

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

相关文章

韦东山老师linux快速入门otg检测不到方案总结

我是如何解决, 第二节, otg 串口检测不到的, 开发手册链接: https://wwyz.lanzoul.com/iF1TA2c21uoh 我首先按照评论区, 老师说的, 根据完全开发手册, 搜索otg, 然后找到老师当时 烧写系统的时候, 利用usb启动, 然后otg链接, 然后 安装了两个驱动, 往后翻, 就可以翻到 然后重…

多系统数据交换与共享技术方案(医疗行业为例,Doc原件)

目录 1 方案概述 1.1 背景 1.2 参考规范 2 需求分析 2.1 交换内容 2.2 功能需求 1) 消息传输 2) 数据整合 3) 服务集成 4) 流程整合 5) 管理功能 3 总体建设方案 3.1 实现思路 3.1.1 交换方案比选 3.1.2 技术优势 3.2 总体架构 3.3 数据交换与共享基本模型 3.…

ATAM需求说明-系统架构师(七十六)

1体系结构权衡分析法ATAM(Architecture Trade Off Analyzer Method)是一种常见的结构权衡分析法&#xff0c;该框架主要关注系统的&#xff08;&#xff09;&#xff0c;针对性能、安全性、可用性和可修改性&#xff0c;在系统开发前进行分析、评价和这种。 A 需求说明 B 架构…

大型生物制药企业如何实现安全又高效地跨网域数据传输?

大型生物制药企业由于组织结构庞大、业务覆盖研发、生产及销售&#xff0c;因此内部会再细分为多个管理单位&#xff0c;包括研发部门、生产部门、质量控制部门、供应链管理部门及营销部和日常业务支撑部门等。在物理区域划分上&#xff0c;大型生物制药企业会设立实验室、研发…

Java—逻辑控制与输入输出

各位看官&#xff1a;如果您觉得这篇文章对您有帮助的话 欢迎您分享给更多人哦 感谢大家的点赞收藏评论&#xff0c;感谢您的支持&#xff01;&#xff01;&#xff01; 一.顺序结构&#xff1a; 我每天起床&#xff0c;躺在床上玩手机&#xff0c;然后吃中午饭&#xff0c;睡…

[C++ 核心编程]笔记 2 栈区和堆区

栈区: 由编译器自动分配释放&#xff0c;存放函数的参数值,同部变量等 注意事项&#xff1a;不要返回局部变量的地址&#xff0c;栈区开辟的数据由编译器自动释放 #define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> using namespace std;//栈区数据注意事项 不要…

【架构师】系统架构相关知识

本文仅做技术交流&#xff0c;转载请注明来源&#xff0c;切勿商用。 参考&#xff1a;系统架构师考纲及教材 1、系统架构的概念 架构是一种表达&#xff0c;而非可运行的软件。 1&#xff09;分析设计在满足所规定的需求方面的有效性 2&#xff09;在设计变更相对容易的阶段…

【读书笔记·VLSI电路设计方法解密】问题4:今天的设计环境中使用的主要工艺技术是什么

主流的工艺技术是互补金属氧化物半导体&#xff08;CMOS&#xff09;技术。其他技术还包括双极性、双极CMOS&#xff08;biCMOS&#xff09;、绝缘体上硅&#xff08;SOI&#xff09;和砷化镓&#xff08;GaAs&#xff09;。 在CMOS技术中&#xff0c;"互补对称"指的…

Android开发:日志功能备忘

临时记一下吧&#xff0c;以后就直接复制粘贴这里面的好了。 实现一个日志记录程序的运行状态&#xff0c;并且带上时间信息&#xff0c;可以写一个类灵活调用。 MyLog.java package com.example.networkaccessrestrictions;import static android.content.ContentValues.TAG;i…

目标检测实战教程Day1(原创)

原创不易&#xff0c;转载请标明本文地址 目标检测一直是计算机视觉领域的核心问题之一&#xff0c;它就像是让计算机拥有了一双“鹰眼”&#xff0c;能在复杂的图像中迅速锁定和识别出各种有趣的目标&#xff0c;比如人、汽车、动物或者任何其他特定物体。在这一章&#xff0c…

【汇编语言】寄存器(CPU工作原理)(五)—— 段寄存器以及CS和IP

文章目录 前言1. 段寄存器2. CS 和 IP结语 前言 &#x1f4cc; 汇编语言是很多相关课程&#xff08;如数据结构、操作系统、微机原理&#xff09;的重要基础。但仅仅从课程的角度出发就太片面了&#xff0c;其实学习汇编语言可以深入理解计算机底层工作原理&#xff0c;提升代码…

产品推介——AC晶体管光耦KL814

KL814产品系列&#xff0c;由苏州晶台光电有限公司研发生产的一款采用交流输入的晶体管光耦。它结合了两个反向并联的红外发射二极管与一个光电晶体管&#xff0c;构成了一个高效且稳定的光电耦合器。 产品特点Product features ◆交流输入响应 ◆电流传输比 (CTR&#xff1…

vs2022调试cmake工程时,添加命令行参数

第一步&#xff1a; 第二步&#xff1a;在launch.vs.json文件里添加 至此可以在调试当前工程时&#xff0c;可以传入命令行参数。

十款超好用的图纸加密软件推荐!2024企业图纸加密最佳选择!

在企业日常工作中&#xff0c;尤其是制造业、建筑业和设计行业&#xff0c;图纸安全至关重要。图纸泄露可能导致专利技术被盗、商业机密外泄&#xff0c;给公司带来不可估量的损失。为了确保图纸的安全性&#xff0c;图纸加密软件是必不可少的工具。以下是2024年十款超好用的图…

Damerau-Levenshtein算法实现中的错误及更正

在实现 Damerau-Levenshtein 算法 时&#xff0c;常见的错误包括边界条件处理不当、转置操作的遗漏或误用、矩阵初始化错误等。Damerau-Levenshtein 算法是 Levenshtein 编辑距离的扩展&#xff0c;它不仅允许插入、删除和替换&#xff0c;还允许 相邻字符的转置。该算法计算两…

明达IO:赋能工业机器人新未来

摘要&#xff1a; 明达技术以其卓越的分布式IO&#xff08;MR30&#xff09;与一体式IO&#xff08;MR20&#xff09;产品&#xff0c;为工业机器人行业提供了完美的信号交互解决方案。在集群式机器人应用场景中&#xff0c;MR30分布式IO以其稳定性能和自由热插拔功能&#xf…

FPGA学习(4)-时序逻辑电路实现D触发器与计数器,LED灯闪烁

1.实现原理 开发板的频率为50MHz&#xff0c;即一个周期为20ns&#xff0c;实现500ms一次翻转&#xff0c;即计数25_000_000次。每次时钟沿来一次&#xff0c;就计一次。 2. 新建工程 2.1源文件代码 在下面左边的变量值要变的&#xff0c;就用reg。不涉及的缺省&#xff1b;…

自动气象观测系统的工作原理

TH-QC8自动气象观测系统是一种能够自动采集、存储、处理和传输气象数据的系统&#xff0c;它广泛应用于气象监测、农业生产、航空安全、交通运输以及科学研究等领域。以下是对自动气象观测系统的详细介绍&#xff1a; 工作原理 自动气象观测系统的工作原理相对简单但高效。它首…

真心建议大家都去冲一冲AI产品经理,AI真的能帮你实现职场跃迁

你有没有想过&#xff1a; AI不仅能帮你实现工作提效 还能帮你实现职场跃迁&#xff01; 根据行业报告&#xff0c;近年来AIGC&#xff08;AI Generated Content&#xff09; 领域岗位数量井喷式增长&#xff0c;AI大模型产品经理作为连接技术与市场的桥梁&#xff0c;正扮演…

Git的安装配置

目录 一、git和svn的区别是什么 二、下载Git 三、安装 四、使用 一、git和svn的区别是什么 1、git是分布式的&#xff0c;svn是集中的式的 2、git存储数据时是按元数据的方式存储&#xff0c;而svn是按文件的方式存储 3、git分支和svn的分支不一样 4、git没有全局版本号…