2

これを書き直したいとしましょう:

main.o: main.cpp
    g++ -c main.cpp

factorial.o: factorial.cpp
    g++ -c factorial.cpp

hello.o: hello.cpp
    g++ -c hello.cpp

次のようなより一般的な方法で:

SOURCES = main factorial hello

$(SOURCES).o: $(SOURCES).cpp
    g++ -c $(SOURCES).cpp

それ、どうやったら出来るの?

4

1 に答える 1

6

最初に、誤解を避けるために、コンパイラに出力ファイルの名前を付ける方法を伝えます。

main.o: main.cpp
    g++ -c main.cpp -o main.o

factorial.o: factorial.cpp
    g++ -c factorial.cpp -o factorial.o

hello.o: hello.cpp
    g++ -c hello.cpp -o hello.o

次に、冗長性を減らすために、自動変数を入れます。

main.o: main.cpp
    g++ -c $< -o $@

factorial.o: factorial.cpp
    g++ -c $< -o $@

hello.o: hello.cpp
    g++ -c $< -o $@

次に、これらのルールはすべて同じように見えることに気付き、それらを静的パターン ルールとして結合します。

main.o factorial.o hello.o: %.o : %.cpp
    g++ -c $< -o $@

次に、変数を使用してオブジェクトの名前を格納します。

OBJECTS := main.o factorial.o hello.o

$(OBJECTS): %.o : %.cpp
    g++ -c $< -o $@
于 2013-09-13T00:40:45.727 に答える