0

私はメイクファイルについて学んでいて、いくつかの構文と SUFFIXES の仕組みについて少し混乱しています。

CPP = g++
OFLAG = -o
.SUFFIXES : .o .cpp .c
.cpp.o : 
    $(CPP) $(CPPFLAGS) -c $<
.c.o :
    $(CPP) $(CPPFLAGS) -c $<

all: \
    Return \
        Declare \
    Ifthen \    
    Guess \
    Guess2 \

Return: Return.o
    $(CPP) $(OFLAG)Return Return.o

Deckare: Declare.o
    $(CPP) $(OFLAG)Declare Declare.o

# follow same format for other executables

Return.o: Return.cpp
Declare.o: Declare.cpp

# follow same format for other executables

「.SUFFIXES : .o .cpp .c」という行は実際に何をするのでしょうか?

$< の意味がよくわかりません。

CPPFLAGS はどこから来たのですか? (make だけの特別な構文ですか?)。

4

1 に答える 1

3

.SUFFIXESmake がサフィックス規則を理解するサフィックスのセットを定義します。.o .cppしたがって、この例では、サフィックスおよびを含むサフィックス ルールを定義できます.c。rule を定義する場合.x.o.x.SUFFIXESリストにないため、サフィックス ルールではなく、代わりにファイルを構築するルールになります。.x.o

$<$(<)現在のルールのターゲットの最初の依存関係の省略形であり、展開されます。

$(CPPFLAGS)make 変数参照です。この makefile では設定しないため、空の文字列に展開されます。慣例以外の名前について特に特別なことはありませんCPPFLAGS。一般的には、c または c++ コンパイラの呼び出しに渡す C プリプロセッサ フラグのセットであり、まさにここで使用されています。

于 2013-07-16T07:03:28.487 に答える