我写了下面的makefile,但我真的不明白发生了什么(我基于模板的说明)。我写了下面的makefile,但我真的不明白发生了什么(我基于模板的说明)。
1) 为什么 DEPENDS 宏在右侧有特定信息?我认为目标文件仅依赖于 .h 文件?
2) 为什么我们必须指定 ARCH?
3) 为什么我们在 CPPOPTIONS 中需要标志 -IstanfordCPPLib?我知道我们需要 LIB 的标志 -lStanfordCPPLib 因为这个宏指定了 .a 文件的位置,该文件使用了所有 .h 文件,但我不确定为什么不将 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)