嵌入式学习之Linux入门篇笔记——18,makefile基本语法(下)

配套视频学习链接:http://【【北京迅为】嵌入式学习之Linux入门篇】 https://www.bilibili.com/video/BV1M7411m7wT/?p=4&share_source=copy_web&vd_source=a0ef2c4953d33a9260910aaea45eaec8
 

1.wildcard 函数

格式:$(wildcard PATTENR)

功能:展开指定的目录

举例:

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

夹下有一个 b.c 的文件。

我们在当前目录下创建的 makefile 里面写下如下代码,echo 前面加了@符号,echo 这

个命令就不显示

执行结果:

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

文件展开

2. notdir 函数

格式:$(notdir $(var))

功能:去掉路径。

举例:

我们在上面的 makefile 中加上以下代码,因为上面的例子我们得到结果是./a.c

和./test/b.c 是有路径的,我们可以直接使用这个变量。

执行结果:

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

3. dir 函数

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

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

当前。

举例:

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

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

4. patsubst 函数

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

功能:替换文件后缀

举例

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

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

替换我们可以使用这个函数,也可以使用$(var:a=b)这个格式来替换,我们来改一下上面

的代码,如下图所示:

运行结果如下:

5. foreach 函数

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

功能:把参数<list>中的单词逐一取出放到参数<var>所指定的变量中,然后再执行

<text>所包含的表达式。每一次<text>会返回一个字符串

举例:

因为 var2 变量的值为./和./test,所以先把./取出来放在 n 变量,然后在执行 wildcard 函

数取出./和./test 下面的 c 文件的路径。所以执行结果如下图所示:

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

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

相关文章

SQL如何实现数据表行转列、列转行?

SQL行转列、列转行可以帮助我们更方便地处理数据&#xff0c;生成需要的报表和结果集。本文将介绍在SQL中如何实现数据表地行转列、列转行操作&#xff0c;以及实际应用示例。 这里通过表下面三张表进行举例 SQL创建数据库和数据表 数据表示例数据分别如下&#xff1a; data_…

数据湖的整体思路

湖本质上是一个集中化&#xff0c;中心化的&#xff0c;一体化的存储技术&#xff0c;并且在其之上追求技术架构的统一化&#xff0c;如流批一体&#xff0c;服务分析一体化。 当数据湖成为中心&#xff0c;那么就可以围湖而建“数据服务环”&#xff0c;环上的服务包括了数仓、…

鸿蒙开发(六)布局概述

迄今为止&#xff0c;我还没有正式提到布局的概念。但其实我之前的demo里面&#xff0c;已经默认使用到了一种布局&#xff0c;那就是线性布局&#xff08;Row、Column&#xff09;&#xff0c;这也是DevEco创建项目默认页面里面默认采用的布局。那么本篇&#xff0c;带着大家一…

微服务介绍、使用 Nacos 实现远程调用以及 OpenFeign 的使用

1 微服务的概念 区别于单体项目 单体项目拆分成微服务项目的目标&#xff1a;高内聚、低耦合 拆分思路 纵向拆分&#xff1a;根据功能模块 横向拆分&#xff1a;抽取可复用模块 2 微服务拆分——远程调用 背景&#xff1a;微服务单一职责&#xff0c;每个服务只有自己的功能…

[PYthon] 字典

如题&#xff0c;这篇博客将带大家来学习Python中的字典~ 那么&#xff0c;是我们想象中的那种字典嘛&#xff1f;接下来跟着可莉去一探究竟吧~ 可莉将这篇文章收录在了&#xff1a;《Python》 可莉推荐的优质博主主页&#xff1a;Keve ’ s blog Python 中的字典&#xff08;D…

-转换流-

它是字节流和字符流之间转换的桥梁 转换流本身其实是字符流&#xff1b; 转换流的位置&#xff1a; 分为两个&#xff1a;字符转换输入流&#xff1a;InputStreamReader将InputStream转换为Reader字符转换输出流&#xff1a;OutputStreamWriter将Writer转换为OutputStream 作用…

4.2 Verilog 过程赋值

关键词&#xff1a;阻塞赋值&#xff0c;非阻塞赋值&#xff0c;并行 过程性赋值是在 initial 或 always 语句块里的赋值&#xff0c;赋值对象是寄存器、整数、实数等类型。 这些变量在被赋值后&#xff0c;其值将保持不变&#xff0c;直到重新被赋予新值。 连续性赋值总是处…

C++ 11新特性之可变参数模板

概述 随着C 11标准的发布&#xff0c;C语言获得了许多强大的新特性&#xff0c;其中一项显著提升灵活性和实用性的创新便是可变参数模板。这一特性极大地扩展了模板在处理不定数量类型或值参数时的能力&#xff0c;为开发者提供了更为强大且灵活的泛型编程工具。 工作机制 在C …

LeetCode Python - 6.Z字形变换

文章目录 题目答案运行结果 题目 将一个给定字符串 s 根据给定的行数 numRows &#xff0c;以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “PAYPALISHIRING” 行数为 3 时&#xff0c;排列如下&#xff1a; P A H N A P L S I I G Y I R 之后&#xff0c;你的输…

Qualcomm 蓝牙耳机 FAQ(41)---------Audio 问题分析之 ACAT Tools安装

大家好&#xff01; 新的一年&#xff0c;在此祝大家&#xff1a;新年快乐&#xff01;工作上步步高升&#xff01;&#xff01;龙年大吉&#xff01;&#xff01;&#xff01; 也欢迎大家登录大大通平台&#xff0c;春节期间正常更新文章&#xff0c;期待你的到来&#xff0…

语义分割任务的准确率计算:基于PyTorch实现

语义分割任务的准确率计算&#xff1a;基于PyTorch实现 &#x1f335;文章目录&#x1f335; &#x1f333;引言&#x1f333;&#x1f333;语义分割任务概述&#x1f333;&#x1f333;准确率的定义与计算方法&#x1f333;&#x1f333;实践应用与优化策略&#x1f333;&…

《Django+React前后端分离项目开发实战:爱计划》 03 理解项目结构

03 Understanding the Project Structure 《Django+React前后端分离项目开发实战:爱计划》 03 理解项目结构 Let’s look the project files created for us, Open the project folder backend in the code editor. 让我们看看为我们创建的项目文件,在代码编辑器中打开项目…

跟我学C++中级篇——函数模板的匹配

一、介绍和说明 在本文会尝试着把函数的重载以及模板自动推导等方法结合起来&#xff0c;一起分析模板函数的匹配的方式和原则。在普通的函数重载和普通的模板函数中&#xff0c;都比较容易理解调用哪一类&#xff0c;但在一些较为少用或者复杂的情况下&#xff0c;可能会发现…

《MySQL 简易速速上手小册》第7章:MySQL监控和日志分析(2024 最新版)

文章目录 7.1 配置和使用 MySQL 监控工具7.1.1 基础知识7.1.2 重点案例&#xff1a;使用 Python 和 Prometheus 监控 MySQL 性能7.1.3 拓展案例 1&#xff1a;自动化 MySQL 慢查询日志分析7.1.4 拓展案例 2&#xff1a;实时警报系统 7.2 解读 MySQL 日志文件7.2.1 基础知识7.2.…

使用django构建一个多级评论功能

&#xff0c;评论系统是交流和反馈的重要工具&#xff0c;尤其是多级评论系统&#xff0c;它允许用户回复特定评论&#xff0c;形成丰富的对话结构。这个文章是使用Django框架从零开始构建一个多级评论系统。Django是一个高级Python Web框架&#xff0c;它鼓励快速开发和干净、…

FastAPI使用异步motor实现对mongodb的增删改查

一、环境准备&#xff1a; 需要有mongodb和poetry以及Python3.10 二、克隆示例代码到本地 git clone gitgithub.com:waketzheng/fastapi_async_mongo_demo.git 三、安装依赖 cd fastapi_async_mongo_demo poetry shell poetry install 四、启动服务 python app/main.py …

Qt中程序发布及常见问题

1、引言 当我们写好一个程序时通常需要发布给用户使用&#xff0c;那么在Qt中程序又是如何实现发布的呢&#xff0c;这里我就来浅谈一下qt中如何发布程序&#xff0c;以及发布程序时的常见问题。 2、发布过程 2.1、切换为release模式 当我们写qt程序时默认是debug模式&#x…

ICCV 2023 | 8篇论文看扩散模型diffusion用于图像检测任务:动作检测、目标检测、异常检测、deepfake检测...

1、动作检测 DiffTAD: Temporal Action Detection with Proposal Denoising Diffusion 基于扩散方法提出一种新的时序动作检测&#xff08;TAD&#xff09;算法&#xff0c;简称DiffTAD。以随机时序proposals作为输入&#xff0c;可以在未修剪的长视频中准确生成动作proposals。…

【爬虫作业】python爬虫作业——爬取汽车之家

爬取汽车之家期末作业&#xff1a; 代码如下所示&#xff1a; import random import timeimport requests #发送网络请求 import parsel import csv # 1.发送网络请求 headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like G…

CVE-2012-2311 漏洞复现

CVE-2012-2311 这个漏洞被爆出来以后&#xff0c;PHP官方对其进行了修补&#xff0c;发布了新版本5.4.2及5.3.12&#xff0c;但这个修复是不完全的&#xff0c;可以被绕过&#xff0c;进而衍生出CVE-2012-2311漏洞。 PHP的修复方法是对-进行了检查&#xff1a; if(query_str…