我有一个Makefile来构建我的项目:
CFLAGS := -g -O2 -MD -MP
SRCDIR := src
OBJDIR := build
BINDIR := bin
SRC := $(wildcard $(SRCDIR)/*.c)
OBJ := $(SRC:$(SRCDIR)/%.c=$(OBJDIR)/%.o)
DEPS := $(OBJ:%.o=%.d)
all: $(BINDIR)/main
$(BINDIR)/main: $(OBJ) | $(BINDIR)
$(CC) $(CFLAGS) $^ -o $@
$(OBJ): $(OBJDIR)/%.o: $(SRCDIR)/%.c | $(OBJDIR)
$(CC) $(CFLAGS) -c $< -o $@
.PHONY: clean distclean
clean:
rm -rf $(OBJDIR)
distclean: clean
rm -rf $(BINDIR)
$(OBJDIR) $(BINDIR):
mkdir -p $@
-include $(DEPS)
我计划使用valgrind从时间到时间检查我的程序是否有内存泄漏。但是建议不要使用任何编译器优化。
如果我只是添加了修改后的valgrind
目标CFLAGS
,则项目将无法完全重建。
另一方面,在经过valgrind检查后,我将不得不做出一件事,因为一切都不会被优化。
听起来不太好。我该如何处理这个问题?