次のメイクファイルを書きましたが、何が起こっているのかよくわかりません (テンプレートの指示に基づいています)。次のメイクファイルを書きましたが、何が起こっているのかよくわかりません (テンプレートの指示に基づいています)。
1) DEPENDS マクロの右側に特定の情報があるのはなぜですか? オブジェクト ファイルは .h ファイルだけに依存していると思いましたか?
2) なぜ ARCH を指定する必要があるのですか?
3) CPPOPTIONS でフラグ -IStanfordCPPLib が必要なのはなぜですか? このマクロは、使用されるすべての .h ファイルを含む .a ファイルの場所を指定するため、LIB にフラグ -lStanfordCPPLib が必要であることは理解していますが、LIB が RandomWriter.o の依存関係として使用されない理由はわかりません。それから?
4) CPPOPTIONS と LDOPTIONS の重要性と機能についての説明もあれば幸いです。
PROGRAM = RandomWriter
OBJECTS = RandomWriter.o
DEPENDS = \
RandomWriter.cpp \
Makefile
ARCH = i386
CPPOPTIONS = -IStanfordCPPLib -arch $(ARCH) -fvisibility-inlines-hidden
LDOPTIONS = -LStanfordCPPLib -arch $(ARCH)
LIB = -lStanfordCPPLib
all: $(PROGRAM)
RandomWriter : $(OBJECTS)
g++ -o $(PROGRAM) $(LDOPTIONS) $(OBJECTS) $(LIB)
RandomWriter.o : $(DEPENDS)
@touch console.h
g++ -c $(CPPOPTIONS) RandomWriter.cpp
@rm console.h
clean:
rm -f *.o *.a $(PROGRAM)