为什么要在回声线上打印?

时间:2013-02-19 04:58:39

标签: makefile echo

我正在阅读有关Makefile的内容,并尝试用它来做一些事情。但是我注意到它打印了echo命令以及与之关联的消息!! (见输出)

这是我的工作:

all:    main

main:   f1.o f2.o main.o
        echo "Linking f1.o f2.o and main.o";
        $(CPP) -o $@ main.o f1.o f2.o

main.o: main.cpp
        echo "Compiling main.cpp";
        $(CPP) -c main.cpp -o $@

f1.o:   f1.cpp
        echo "Compiling f1.cpp";
        $(CPP) -c f1.cpp -o $@

f2.o:   f2.cpp
        echo "Compiling f2.cpp";
        $(CPP) -c f2.cpp -o $@

这是输出:

[mih1406@mih1406-ArchLinux 4]$ make
echo "Compiling f1.cpp";
Compiling f1.cpp
g++ -c f1.cpp -o f1.o
echo "Compiling f2.cpp";
Compiling f2.cpp
g++ -c f2.cpp -o f2.o
echo "Compiling main.cpp";
Compiling main.cpp
g++ -c main.cpp -o main.o
echo "Linking f1.o f2.o and main.o";
Linking f1.o f2.o and main.o
g++ -o main main.o f1.o f2.o

请注意,它会打印两条消息:

  

echo“编译f1.cpp”;

     

编译f1.cpp

1 个答案:

答案 0 :(得分:3)

默认情况下,make会回显它即将启动的所有命令。您可以通过使用@开始相应的行来抑制一个命令,例如

main:   f1.o f2.o main.o
    @echo "Linking f1.o f2.o and main.o";
    $(CPP) -o $@ main.o f1.o f2.o

有关详细信息,请参阅https://www.gnu.org/software/make/manual/html_node/Echoing.html#Echoing