Suppress messages in make clean (Makefile silent remove)

后端 未结 5 2046
感情败类
感情败类 2021-01-30 13:10

I\'m wondering how I can avoid some echo in a Makefile :

clean:
    rm -fr *.o

this rule will print:

$>make clean   
rm -fr          


        
5条回答
  •  没有蜡笔的小新
    2021-01-30 13:38

    To start with: the actual command must be on the next line (or at least that is the case with GNU Make, it might be different with other Make's - I'm not sure of that)

    clean:
        rm -rf *.o
    

    (note, you need a TAB before rm -rf *.o as in every rule)

    Making it silent can be done by prefixing a @:

    so your makefile becomes

    clean:
        @rm -rf *.o
    

    If there are no *.o files to delete, you might still end up with an error message. To suppress these, add the following

    clean:
        -@rm -rf *.o 2>/dev/null || true
    
    • 2>/dev/null pipes any error message to /dev/null - so you won't see any errors
    • the - in front of the command makes sure that make ignores a non-zero return code

提交回复
热议问题