我有這個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
僅供參考,'echo -n'的行爲不是POSIX定義的(POSIX顯式*允許* echo'基於'-n'標誌修改其行爲 - 與'echo -e'形成對比,這是如果它不在輸出上打印「-e」,但在給定該標誌時未指定其行爲)。考慮使用'printf%s foo'而不是'echo -n foo'。 –