热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

GNU等同于BSDmake的$(var:Q)?-GNUmakeequivalenttoBSDmake's$(var:Q)?

BSDmakehasa:Qvariableexpansionmodifier,documentedintheFreeBSDmakemanpageasfollows:B

BSD make has a :Q variable expansion modifier, documented in the FreeBSD make man page as follows:

BSD make有一个:Q变量扩展修饰符,在FreeBSD中有文档记录如下:

:Q   Quotes every shell meta-character in the variable, so that it can be
     passed safely through recursive invocations of make.

If variable var has value a b\c"d'e$f, then $(var:Q) expands to a\ b\\c\"d\'e\$f (or something equivalent). This is useful to pass strings to the shell without worrying that the shell will interpret any special characters.

如果变量var的值是b\c“d’e$f,那么$(var:Q)将会扩展到\ b\\ \\ $f(或类似的东西)。这有助于将字符串传递给shell,而不必担心shell将解释任何特殊字符。

Does GNU make have an equivalent? Or do I have to escape special characters my own?

GNU是否有一个等价的?还是我必须逃离自己的特殊角色?

2 个解决方案

#1


1  

GNU make provides functions subst and patsubst which can help solve the problem. Those are more general, but require more work by the developer since they do not solve the specific problem. Also, the documentation does not show they use regular expressions, adding to the work.

GNU make提供了能够帮助解决这个问题的函数subst和patsubst。这些更一般,但是需要开发人员更多的工作,因为他们没有解决具体的问题。此外,文档没有显示它们使用正则表达式,从而增加了工作。

For instance, you could in principle build up an expression like this:

例如,你可以在原则上建立一个这样的表达式:

$(subst \\,\\\\,$(subst ",\", $(subst ',\', var)))

For more discussion,

更多的讨论,

  • Escaping comma and space in GNU Make
  • 在GNU中避免逗号和空格。
  • Can GNU make handle filenames with spaces?
  • GNU可以使用空格来处理文件名吗?
  • GNU Make, double quotes and lists
  • GNU制造,双引号和列表。

#2


1  

For sh variants, simply encase the expression in single quotes, changing any embedded single quote into '"'"'.

对于sh变体,只需将表达式括在单引号中,将任何嵌入的单引号更改为“”“”。

quote = '$(subst ','"'"',$1)'

Usage:

用法:

$(error [$(call quote,ab'c\ d$$f)])

Footnote: There is no way to quote anything inside single quotes. A second single quote thus closes the quoted expression. So, to handle an embedded single quote, close the single quotes with ', add a quoted single quote "'", start another single-quoted string '.

脚注:在单引号内无法引用任何东西。第二个单引号可以关闭引用的表达式。因此,要处理嵌入的单引号,请关闭单引号,添加引用的单引号“”,开始另一个单引号字符串。


推荐阅读
  • 我们正在使用GNU Make来构建我们的系统,在makefile文件的末尾,我们通过一个名为Makedepends的包含来生成一系列的.d文件。然而,当文件被删除或移动时,依赖关系会中断,我们需要寻找一种方法来优雅地处理这种情况。 ... [详细]
  • 深入理解SAP Fiori及其核心概念
    本文详细介绍了SAP Fiori的基本概念、发展历程、核心特性、应用类型、运行环境以及开发工具等,旨在帮助读者全面了解SAP Fiori的技术框架和应用场景。 ... [详细]
  • 本文详细介绍如何在Spring Boot项目中集成和使用JPA,涵盖JPA的基本概念、Spring Data JPA的功能以及具体的操作步骤,帮助开发者快速掌握这一强大的持久化技术。 ... [详细]
  • 本文档提供了详细的MySQL安装步骤,包括解压安装文件、选择安装类型、配置MySQL服务以及设置管理员密码等关键环节,帮助用户顺利完成MySQL的安装。 ... [详细]
  • 正在学习操作系统开发,遇到一个内核在GRUB Legacy(0.97)中无法成功引导的问题。具体表现为输入内核命令后显示错误信息,尝试引导时GRUB挂起。 ... [详细]
  • 本文探讨了在使用 ClickOnce 部署方式时遇到的自动更新失败问题,包括本地安装与服务器安装的不同表现,并提供了详细的解决方案。 ... [详细]
  • 随着物联网技术的快速发展,NB-IoT(窄带物联网)作为一项关键的技术,正逐步成为实现大规模设备互联的重要手段。本文将详细介绍NB-IoT技术的特点、应用场景及其在实际项目中的应用实例。 ... [详细]
  • 本文探讨了Flutter和Angular这两个流行框架的主要区别,包括它们的设计理念、适用场景及技术实现。 ... [详细]
  • 圣诞夜的驯鹿之谜:鲁道夫是公是母?
    野生动物专家探讨圣诞老人座驾上的驯鹿性别之谜 ... [详细]
  • ECharts图表绘制函数集
    本文档提供了使用ECharts库创建柱状图、饼图和双折线图的JavaScript函数。每个函数都详细列出了参数说明,并通过示例展示了如何调用这些函数以生成不同类型的图表。 ... [详细]
  • 本文探讨了在使用Apache Flink向Kafka发送数据过程中遇到的事务频繁失败问题,并提供了详细的解决方案,包括必要的配置调整和最佳实践。 ... [详细]
  • 本文将详细介绍如何实现类似于CSDN博客的页面返回顶部功能,通过调整返回速度和图标显示条件,使用户体验更加流畅。适合前端开发者参考学习。 ... [详细]
  • 本文深入探讨了JLine库中的ConsoleReader.drawBuffer()方法的使用场景和具体实现,通过多个实际代码示例,帮助开发者更好地理解和应用此方法。 ... [详细]
  • 探讨如何在C++中,当子类实例存储在父类类型的向量中时,正确访问子类特有的成员变量或方法。 ... [详细]
  • Qt6 QML 图像绘制与剪裁
    本文介绍了如何在Qt6 QML的画布中加载和绘制图像,并详细说明了图像剪裁的实现方法。 ... [详细]
author-avatar
明卫国
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有