GNU makefile如何以及何时引用字符串

历史邮票

如何以及何时在make文件中引用字符串?什么是最佳做法?

以下是报价方式吗?

$(warning  $(shell ls -ld "$(CURDIR)" ) )

我对Bash很熟悉,在Bash中通常会引用变量以允许嵌入空格。你在makefile文件中这样做吗?

我应该如何使用字符串进行赋值语句?

vara := "$(CURDIR)"

varb := $(CURDIR)

varc := /home/me/source

vard := "/home/me/source"

等距后的空间又如何呢?

疯狂的科学家

您永远不要因为make引用任何东西Make无法以任何方式理解或解析单引号或双引号字符。您在makefile中编写的每个引号字符都将保留为文字引号,并按原样传递给make调用的命令。

因此,如果外壳程序期望并可以解释带引号的字符串,则应使用引号。如果外壳程序不期望或无法正确解释带引号的字符串,则不应使用引号。

在你的例子,该报价是否是可接受的取决于这些变量是如何使用的如上所述,make不会对引号进行任何特殊处理,这意味着vard(例如)包含文字字符串"/home/me/source"(包括引号)。

如果您使用该值的方式使外壳程序可以为您处理引号,那么就可以了:

all: ; echo $(vard)

将打印/home/me/source(不带引号),因为shell会解释它们。但是,如果您在make上下文中使用变量,例如,将其用作目标或先决条件,请执行以下操作:

all: $(vard)
$(vard): ; echo $@

那么这是正确的,因为目标和前提是文字字符串"/home/me/source"(包括引号)。

通常,最好不要在变量中的文件名周围使用引号,而应在配方中在make变量附近添加引号。当然,如果变量包含整个Shell脚本,而不仅仅是文件名,则应在脚本中添加适当的引号。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章