0

这种方法找不到我认为我指定的文件。

SHELL = /bin/bash
PKG_NAME = test
PKG_VERSION := $(shell grep -i '^version' $(PKG_NAME)/DESCRIPTION | cut -d ':' -f2 | cut -d ' ' -f2)

在 shell 本身中,grep -i '^version' test/DESCRIPTION | cut -d ':' -f2 | cut -d ' ' -f2确实会成功返回版本,例如0.4-7

但是,通过 makefile 运行会返回:

grep: test: Is a directory
grep: /DESCRIPTION: No such file or directory

test是一个目录,这是真的,但test/DESCRIPTION确实存在,所以我猜$(PKG_NAME)/DESCRIPTION这不是组装文件名的正确方法。

建议?谢谢。

4

1 回答 1

1

该错误表明 grep 将test/DESCRIPTION视为两个单独的参数。PKG_NAME 分配行上是否有多余的空格,或者行之间$(PKG_NAME)和行/DESCRIPTION中是否有错误的空格$(shell ...)

作为一般规则,您可能希望开始在 shell 命令 (ie '$(PKG_NAME)/DESCRIPTION') 的参数周围加上引号,以防止这种分词问题(尽管没有空格,您通常不会遇到这种问题)。

于 2013-07-16T02:35:59.300 回答