2

我在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

如何阻止这个?"@" 在 if..fi 中不起作用,会出现此错误:/bin/sh: line 1: @echo: command not found

4

1 回答 1

4

每个逻辑行都必须以 a 开头@才能被抑制。逻辑行是物理行加上在行尾使用反斜杠组合的所有后续行。因此,在您的情况下,您需要在@之前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
于 2013-06-19T13:35:12.993 回答