【发布时间】:2009-08-27 15:42:48
【问题描述】:
我想知道Makefile中的优化和调试选项放在哪里:链接阶段还是编译阶段?我正在阅读 Makefile:
ifeq ($(STATIC),yes)
LDFLAGS=-static -lm -ljpeg -lpng -lz
else
LDFLAGS=-lm -ljpeg -lpng
endif
ifeq ($(DEBUG),yes)
OPTIMIZE_FLAG = -ggdb3 -DDEBUG
else
OPTIMIZE_FLAG = -ggdb3 -O3
endif
ifeq ($(PROFILE),yes)
PROFILE_FLAG = -pg
endif
CXXFLAGS = -Wall $(OPTIMIZE_FLAG) $(PROFILE_FLAG) $(CXXGLPK)
test: test.o rgb_image.o
$(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS)
Makefile.depend: *.h *.cc Makefile
$(CC) -M *.cc > Makefile.depend
clean:
\rm -f absurdity *.o Makefile.depend TAGS
-include Makefile.depend
让我惊讶的是 CXXFLAGS 用于链接。我知道它也用于编译生成 .o 文件的隐式规则中,但是否有必要再次使用它进行链接?具体来说,我应该把优化和调试放在哪里:链接阶段还是编译阶段?
【问题讨论】:
-
请注意,代码格式(使用反引号或四个空格缩进)与使用“>”的块引号不同。
标签: debugging optimization makefile linker compilation