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

次の 2 つのメッセージが出力されることに注意してください。

echo "f1.cpp をコンパイルしています";

f1.cpp のコンパイル

4

1 に答える 1

3

デフォルトでmakeは、起動しようとしているすべてのコマンドをエコーし​​ます。@対応する行をで開始することにより、1 つのコマンドに対してそれを抑制することができます。

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 に答える