用单撇号替换文本
Text substitution with single apostrophe
我们在 GNUmakefile 中发现了以下错误报告。我仍然不太清楚错误的原因(报告缺少一些细节),但我想确保替换和赋值对 GNU Make 有效。
SUNCC_VERSION := $(subst `,',$(shell $(CXX) -V 2>&1))
我记得在使用 SunCC (C++) 编译器和默认的 Solaris shell 时需要它。如果没有替换,makefile 在 运行 时会产生错误。 grepping SUNCC_VERSION
版本号时出现错误。
这是有关该主题的制作手册:8.2 Functions for String Substitution and Analysis。本节不讨论保留字符或类似主题(黑斜线和百分号除外)。
我的问题是,替换是否有效或是否需要修复?
没有办法知道,因为你没有说明 "errors when run" 是什么意思。什么命令给出了错误?错误信息是什么?在 make 执行此替换之前,$(CC) -V
命令生成的值是多少?
任何类型的引号都没有什么特别之处:单引号、双引号或反引号。 Make 像对待任何其他角色一样对待他们。所以,这种替代并不是为了 make 的利益。
很可能 $(CC) -V
shell 命令的结果使用 old-school GNU(和其他)格式打印引号内的一些字符串,该格式使用反引号作为起始单引号,并且单引号作为结束单引号,所以类似于:
foo `version' bar
然后这个变量SUNCC_VERSION
被用在不允许反引号的地方。可能作为 shell 脚本的一部分,并且缺少适当的引用,如下所示:
all:
@echo Version is $(SUNCC_VERSION)
如果您不替换反引号,这将扩展为:
echo Version is foo `version' bar
这不是有效的 shell 脚本。
然而,由于在问题中没有关于这些的任何细节,我只是猜测。
我们在 GNUmakefile 中发现了以下错误报告。我仍然不太清楚错误的原因(报告缺少一些细节),但我想确保替换和赋值对 GNU Make 有效。
SUNCC_VERSION := $(subst `,',$(shell $(CXX) -V 2>&1))
我记得在使用 SunCC (C++) 编译器和默认的 Solaris shell 时需要它。如果没有替换,makefile 在 运行 时会产生错误。 grepping SUNCC_VERSION
版本号时出现错误。
这是有关该主题的制作手册:8.2 Functions for String Substitution and Analysis。本节不讨论保留字符或类似主题(黑斜线和百分号除外)。
我的问题是,替换是否有效或是否需要修复?
没有办法知道,因为你没有说明 "errors when run" 是什么意思。什么命令给出了错误?错误信息是什么?在 make 执行此替换之前,$(CC) -V
命令生成的值是多少?
任何类型的引号都没有什么特别之处:单引号、双引号或反引号。 Make 像对待任何其他角色一样对待他们。所以,这种替代并不是为了 make 的利益。
很可能 $(CC) -V
shell 命令的结果使用 old-school GNU(和其他)格式打印引号内的一些字符串,该格式使用反引号作为起始单引号,并且单引号作为结束单引号,所以类似于:
foo `version' bar
然后这个变量SUNCC_VERSION
被用在不允许反引号的地方。可能作为 shell 脚本的一部分,并且缺少适当的引用,如下所示:
all:
@echo Version is $(SUNCC_VERSION)
如果您不替换反引号,这将扩展为:
echo Version is foo `version' bar
这不是有效的 shell 脚本。
然而,由于在问题中没有关于这些的任何细节,我只是猜测。