1

我正在阅读有关 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

4

1 回答 1

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

于 2013-02-19T08:06:23.073 回答