)(期待 ")" 予期しない単語このMakefile
:/binに/ SH:1:構文エラー:私は
TMP_DIR := tmp
RUN_OR_NOT := $(shell date '+%y%m%d%H%M')
all: version
version:
ifeq ($(shell test -d ${TMP_DIR} && echo -n "yes";),yes)
$(shell echo ${TMP_DIR} already exists ...)
else
$(shell mkdir -p ${TMP_DIR})
endif
私はディレクトリtmp
が存在するかどう、まずチェックしたい、そしてそれを作成それが存在しなければ、それだけです。これは動作しますが、奇妙なエラーで:
ifeq (yes,yes)
/bin/sh: 1: Syntax error: word unexpected (expecting ")")
Makefile:7: die Regel für Ziel „version“ scheiterte
make: *** [version] Fehler 2
なぜこの奇妙な/bin/sh: 1: Syntax error: word unexpected (expecting ")")
誤差はありますか?そして、これを解決する方法は?
それはちょうど 'version:$ {TMP_DIR}'と '$ {TMP_DIR}:であるように見えます。 mkdir -p $ {TMP_DIR} 'となります。 – melpomene
'mkdir -p'は、ディレクトリが存在しない場合にのみ作成します。 – Beta
FYI、 'echo -n'の動作はPOSIXで定義されていません(POSIXは明示的に' '-e''が' -n'フラグに基づいて動作を変更することを許可します。出力に '-e'を出力しなければ違反しますが、フラグが与えられたときの動作は指定しません)。 'echo -n foo'の代わりに' printf%s foo'を使うことを検討してください。 –