我在makefile中有以下命令:
$(OUT)/classes.jar: $(JavaFileList) $(libJars) $(ANDROID_JAR) | $(OutClasses)
@echo javac: `wc -l < $(JavaFileList)` source files
if [ $$ENABLE_MV = 'YES' ]; then \
echo Backup $(OutClasses) to $(OutClasses).bak; \
fi
但每次都会打印以下命令:
if [ $$ENABLE_MV = 'YES' ]; then \
echo Backup $(OutClasses) to $(OutClasses).bak; \
fi
如何制止这个? “@”dos在if..fi中不起作用,会发生以下错误:/ bin / sh:第1行:@echo:命令未找到
答案 0 :(得分:4)
每条逻辑行必须以要被抑制的@
开头。逻辑行是物理线加上所有后续行,在行尾使用反斜杠组合。因此,在您的情况下,您需要@
之前的if
,因为前一行(echo
)不以反斜杠结尾,因此这是一条新的逻辑行。您不需要后续行中的@
,因为它们是相同的逻辑行(使用反斜杠连接)。
$(OUT)/classes.jar: $(JavaFileList) $(libJars) $(ANDROID_JAR) | $(OutClasses)
@echo javac: `wc -l < $(JavaFileList)` source files
@if [ $$ENABLE_MV = 'YES' ]; then \
echo Backup $(OutClasses) to $(OutClasses).bak; \
fi