0

このアプローチでは、指定したと思われるファイルが見つかりません。

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

シェル自体でgrep -i '^version' test/DESCRIPTION | cut -d ':' -f2 | cut -d ' ' -f2は、バージョンを正常に返します。0.4-7

ただし、メイクファイルを介して実行すると、次のように返されます。

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を 2 つの別個の引数として認識していることを示しています。PKG_NAME 割り当て行に余分なスペースがありますか、または行$(PKG_NAME)と行の間/DESCRIPTIONに誤ったスペースがあり$(shell ...)ますか?

原則として、'$(PKG_NAME)/DESCRIPTION'この種の単語分割の問題を防ぐために、シェル コマンド (つまり ) への引数の周りに引用符を付けることをお勧めします (ただし、スペースがないと、通常、この種の問題は発生しません)。

于 2013-07-16T02:35:59.300 に答える