Loading [MathJax]/jax/input/TeX/jax.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Makefile中的字符串替换

Makefile中的字符串替换

作者头像
mingjie
发布于 2023-10-13 02:28:19
发布于 2023-10-13 02:28:19
71800
代码可运行
举报
运行总次数:0
代码可运行

Makefile中的字符串替换,做下验证和总结。

案例:Makefile Tutotial中一段代码

Makefile Tutotial最后给出了一段makefile,里面OBJS有字符串通配、替换的过程:

Makefile

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SRC_DIRS := ./src
BUILD_DIR := ./build

SRCS := $(shell find $(SRC_DIRS) -name '*.cpp' -or -name '*.c' -or -name '*.s')
OBJS := $(SRCS:%=$(BUILD_DIR)/%.o)

TAR:
    @echo SRCS : $(SRCS)
    @echo OBJS : $(OBJS)

执行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
touch aa123zz.c
touch aa332dzz.cpp
touch aa44325drzz.cpp
make

输出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SRCS : ./aa123zz.c ./aa44325drzz.cpp ./aa332dzz.cpp
OBJS : ./build/./aa123zz.c.o ./build/./aa44325drzz.cpp.o ./build/./aa332dzz.cpp.o

(SRCS:(BUILD_DIR)/%.o)如何匹配的还是比较困惑,下面做一些实验和总结。

Makefile字符串替换规则

场景一:整体匹配替换

Makefile

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SRCS := ./aa123zz.c ./aa44325drzz.cpp ./aa332dzz.cpp
OBJS := $(SRCS:.cpp=.cxx)

TAR:
    @echo SRCS : $(SRCS)
    @echo OBJS : $(OBJS)

输出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
make
SRCS : ./aa123zz.c ./aa44325drzz.cpp ./aa332dzz.cpp
OBJS : ./aa123zz.c ./aa44325drzz.cxx ./aa332dzz.cxx

规则:注意字符串中的空格起到分隔作用,分隔的每一个字符串都会应用下面规则

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$(变量名:旧值=新值)

场景二:通配符替换

Makefile

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SRCS := ./aa123zz.c ./aa44325drzz.cpp ./aa332dzz.cpp
OBJS := $(SRCS:./aa%zz.cpp=./AA%%ZZ.cxx)

TAR:
	@echo SRCS : $(SRCS)
	@echo OBJS : $(OBJS)

输出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
make
SRCS : ./aa123zz.c ./aa44325drzz.cpp ./aa332dzz.cpp
OBJS : ./aa123zz.c ./AA44325dr%ZZ.cxx ./AA332d%ZZ.cxx

规则:注意带通配符的话,旧值必须整体匹配,匹配一部分不行。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$(变量名:旧值带通配符)=新值带不带通配符都行通配符代表旧值中匹配的字符)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-07-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
优化预算管理流程:Web端实现预算编制的利器
预算是企业在预测、决策的基础上,以数量和金额的形式反映的企业未来一定时期内经营、投资、财务等活动的具体计划,为实现企业目标而对各种资源和企业活动的详细安排,是计划的数字化、表格化、明细化表达。预算管理的分类包括经营预算、专门决策预算和财务预算:
葡萄城控件
2023/10/27
2510
优化预算管理流程:Web端实现预算编制的利器
提升数据可视化:拖拽编辑自动汇总,树形数据表格展示新方式
树形结构是一种非常常见的数据结构,它由一组以层次关系排列的节点组成。树的结构类似于自然界中的一棵树,树根对应顶层节点,而子节点则分支延伸出来。
葡萄城控件
2023/12/14
3210
提升数据可视化:拖拽编辑自动汇总,树形数据表格展示新方式
如何开发一款基于 vite+vue3 的在线表格系统(下)
在上篇内容中我们为大家分享了详细介绍Vue3和Vite的相关内容。在本篇中我们将从项目实战出发带大家了解Vite+Vue3 的在线表格系统的构建。 使用Vite初始化Vue3项目 在这里需要注意:根据官网文档说明,使用Vite需要node版本在12以上,请在创建项目前检查node版本
葡萄城控件
2022/09/22
1.2K0
如何开发一款基于 vite+vue3 的在线表格系统(下)
Svelte入门——Web Components实现跨框架组件复用
Svelte 是构建 Web 应用程序的一种新方法,推出后一直不温不火,没有继Angular、React和VUE成为第四大框架,但也没有失去热度,无人问津。造成这种情况很重要的一个原因是,Svelte 的核心思想在于【通过静态编译减少框架运行时的代码量】,它可以像React和VUE一样开发,但却没有虚拟DOM。,使它可以Svelte可以将代码编译为体积小、不依赖于框架的JS代码。
葡萄城控件
2021/11/29
1.6K0
Svelte入门——Web Components实现跨框架组件复用
JavaScript能否实现在线Excel附件的上传与下载?
在本地使用Excel时,经常会有需要在Excel中添加一些附件文件的需求,例如在Excel中附带一些Word,CAD图等等。同样的,类比到Web端,现在很多人用的在线Excel是否也可以像本地一样实现附件文件的操作呢?答案是肯定的,不过和本地不同的是,Web端不会直接打开附件,而是使用超链接单元格的形式来显示,今天小编将为大家介绍使用前端HTML+JavaScript(以下简称为JavaScript)+CSS技术通过超链接单元格的形式实现在线Excel附件上传、下载和修改的操作。
葡萄城控件
2023/10/16
2170
JavaScript能否实现在线Excel附件的上传与下载?
如何在前端应用中合并多个 Excel 工作簿
SpreadJS是纯前端的电子表格控件,可以轻松加载 Excel 工作簿中的数据并将它们呈现在前端浏览器应用的网页上。
葡萄城控件
2023/10/11
3970
如何在前端应用中合并多个 Excel 工作簿
Svelte入门——Web Components实现跨框架组件复用(二)
在上节中,我们一起了解了如何使用Svelte封装Web Component,从而实现在不同页面间使用电子表格组件。
葡萄城控件
2021/12/15
1.6K0
Svelte入门——Web Components实现跨框架组件复用(二)
表格技术七十二变|手把手教你用Canvas电子表格做电子签名
日常生活工作学习中,大家对电子表格必定不陌生。从工作数据汇总分析到出门收据各种电子发票,这些都是由电子表格制作出来的。
葡萄城控件
2021/08/13
2.2K0
表格技术七十二变|手把手教你用Canvas电子表格做电子签名
因业务需要,我用canvas写了一个签名板
文章链接:https://cloud.tencent.com/developer/article/2468390
一起重学前端
2024/11/21
1000
揭秘报表新玩法!标配插件不再单调,如何用柱形图插件让你的报表瞬间高大上!
图表作为一款用于可视化数据的工具,可以帮助我们更好的分析和理解数据,并发现数据之间的关系和趋势。下面以柱形图为例介绍如何使用JavaScript在报表中引入图表。
葡萄城控件
2023/10/11
1920
揭秘报表新玩法!标配插件不再单调,如何用柱形图插件让你的报表瞬间高大上!
用代码玩转迷你图:手把手教你用编程语言打造简洁易读的数据图表!
迷你图(Mini Chart)最早起源于流程图和组织架构图中的一种简化图形,用于表示一个大型数据集合中的趋势和变化。随着数据可视化技术的发展,迷你图也被广泛应用在各种类型的数据图表中,例如折线图、柱形图、散点图等。迷你图通常具有小巧、简洁、直观的特点,能够在有限的空间内有效地展示数据趋势,方便用户理解和分析数据。在现代数据分析和商业决策中,迷你图已经成为一种非常常见的数据可视化工具。今天的文章内容就是介绍如何在JavaScript中引入迷你图。
葡萄城控件
2023/10/11
2590
用代码玩转迷你图:手把手教你用编程语言打造简洁易读的数据图表!
【图解】Web前端实现类似Excel的电子表格
本文将通过图解的方式,使用纯前端表格控件 SpreadJS 来一步一步实现在线的电子表格产品(例如可构建Office 365 Excel产品、Google的在线SpreadSheet)。 工具简介:
葡萄城控件
2018/01/10
9.4K0
【图解】Web前端实现类似Excel的电子表格
数据透视表上线!如何在纯前端实现这个强大的数据分析功能?
在Office三大办公套件中,Excel可能是功能最多、最难精通的那一款了。从日常的表格录入到复杂的业务数据统计分析,Excel仿佛一位外表平平无奇,实力却深不可测的武林高手。熟练使用Excel往往能在日常工作中获得事半功倍的效果,而这里所谓的“熟练”除了熟悉大量公式、图表绘制等操作外,还要掌握一项非常重要的特性——数据透视表。 所谓数据透视表,就是将原始的明细数据表中涉及的各组关联数据进行分类汇总的产物。用户可以按照不同的组合方式对原始数据进行处理。例如下面这样的销售业绩原始数据:
葡萄城控件
2022/09/23
2.1K0
SpreadJS使用进阶指南 - 使用 NPM 管理你的项目
前言 SpreadJS作为一款性能出众的纯前端电子表格控件,自2015年发布以来,已经被广泛应用于各领域“在线Excel”数据管理项目中。NPM,作为管理Node.js库最有力的手段,解决了很多NodeJS代码部署的问题。 如今,为让您更方便的使用产品和更好地管理项目中的SpreadJS代码,我们已将SpreadJS应用打包发布到了NPM服务器。如您需要,请点击查看(需要FQ) NPM简介 也许您刚刚接触前端开发,或者刚刚使用NodeJS。NPM对于您来说,可能会感到些许陌生。这里,是NPM的简单介绍,希望
葡萄城控件
2018/07/05
2.3K0
如何使用 JavaScript 导入和导出 Excel
在现代的Web应用开发中,与Excel文件的导入和导出成为了一项常见而重要的任务。无论是数据交换、报告生成还是数据分析,与Excel文件的交互都扮演着至关重要的角色。本文小编将为大家介绍如何在熟悉的电子表格 UI 中轻松导入 Excel 文件,并以编程方式修改表格或允许用户进行编辑,最后使用葡萄城公司的纯前端表格控件SpreadJS组件它们导出回 Excel 文件。
葡萄城控件
2024/03/27
7280
如何使用 JavaScript 导入和导出 Excel
Svelte框架实现表格协同文档
首先,从框架搭建上,本篇示例采用当下流行的前后端分离的开发方式,前端使用npm作为脚手架搭建Svelte框架。 后端使用Java的SpringBoot作为后端框架。 首先,介绍下在前端Svelte框架下搭建在线表格编辑器。 1、在pageage.json文件中引入相关资源
葡萄城控件
2023/02/01
1.8K0
如何使用 Blazor 框架在前端浏览器中导入和导出 Excel
Blazor 是一个相对较新的框架,用于构建具有 .NET 强大功能的交互式客户端 Web UI。一个常见的用例是将现有的 Excel 文件导入 Blazor 应用程序,将电子表格数据呈现给用户,并且能够允许进行任何更改,最后将该数据导出回 Excel 文件或将其保存到数据库。
葡萄城控件
2023/10/11
4270
如何使用 Blazor 框架在前端浏览器中导入和导出 Excel
Web前端性能优化(二)
懒加载 即延迟加载,在电商或是页面很长的业务场景中,我们通常会使用懒加载的方式对图片进行请求,只有在图片进入可视区域之后才请求图片资源,而在之前都通过一张占位图进行占位,将真正的图片路径存储在元素的 data-url 中,这样做的好处在于减少无效资源的加载,并不是所有的用户都会浏览完网站的所有图片,而且浏览器是存在并发上限的,并发加载的资源过多会阻塞 JS 的加载,影响网站的正常使用
Nian糕
2018/12/24
8350
Web前端性能优化(二)
如何使用前端表格控件实现多数据源整合?
作为表格产品的典型应用场景之一,几乎所有的行业都会存在类 Excel 报表开发这样的应用场景,而在这些应用场景中,经常会遇见下面的这些痛点:
葡萄城控件
2024/05/31
2710
如何使用前端表格控件实现多数据源整合?
基于前端技术实现的全面预算编制系统
在现代商业环境中,预测销售数据和实际成本是每个公司CEO和领导都极为重视的关键指标。然而,由于市场的不断变化,准确地预测和管理这些数据变得愈发具有挑战性。为了应对这一挑战,建立一个高效的系统来管理和审查销售数据的重要性不言而喻。今天小编就将为大家介绍一下如何使用葡萄城公司的纯前端表格控件SpreadJS实现一个预算编制系统。
葡萄城控件
2024/03/26
1410
基于前端技术实现的全面预算编制系统
推荐阅读
相关推荐
优化预算管理流程:Web端实现预算编制的利器
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验