当我运行make clean时,我得到syntax error: unexpected end of file
。
当我删除导致错误的变量的括号时,我成功地摆脱了这个错误。
我想知道为什么会这样。
我正在使用:
我的变量名为TARGET
,就像这样但更长:
./ShowEnumContentsPrefAPI.o ./ShowEnumsPrefAPI.o
发生错误的行是:
rm -f $(TARGET)
当我删除括号时,错误消失了并且有效:
rm -f $TARGET
另一条线也是:
if [ "$(TARGET)" != "" ]; then \
当我删除括号时,错误消失了并且有效:
if [ "$TARGET" != "" ]; then \
=============================================== ===============
mks 5.2 sh.exe
上运行的,而不是cygwin ksh
?=============================================== ===============
更新
这是实际代码:
clean:
if [ "$TARGET" != "" ]; then \
rm -rf $(TARGET); \
fi
这就产生了错误syntax error: unexpected end of file
:
clean:
if [ "$(TARGET)" != "" ]; then \
rm -rf $(TARGET); \
fi
唯一的区别是目标周围的括号。
执行
echo "T:$T"; \
echo "TARGET:$TARGET"; \
生产
T:
TARGET:ARGET
echo "(TARGET):$(TARGET)";\
再次产生syntax error: unexpected end of file
。
今天我尝试切断一些TARGET变量。故意用手简化,rm -f $(TARGET)
工作正常。我怀疑这是cygwin的rm
,[
前任的问题。我将尝试升级到cygwin的最新版本,看看问题是否仍然存在。
答案 0 :(得分:1)
您似乎已将值分配给$T
而非$(TARGET)
与bash不同,在make中,$
仅适用于下一个字符或括号表达式。因此,“$TARGET
”解析为“$T
”加上文字“ARGET
”的扩展......为了说明,请考虑以下内容:
X := _X_
XX := _YY_
$(info - $XX -)
$(info - $(XX) -)
你得到:
- _X_X -
- _YY_ -
希望有所帮助。