创建文件会中断 Makefile for C++ 中的 -DDEBUG 标志

Creating files breaks -DDEBUG flag in Makefile for C++

在我的 Makefile 中,我使用 -DDEBUG 标志进行调试,在以下最小示例中工作正常(编译和正确输出):

# Makefile
all : debug

CXX = g++
CXXFLAGS = -std=c++11 -Werror -Wall -Wextra -Wno-unused-value
SOURCES = main.cpp vector.cpp
OBJECTS = $(subst .cpp,.o, $(SOURCES))

debug: $(OBJECTS)
    $(CXX) $(CXXFLAGS) -DDEBUG -o Program $(OBJECTS)
    ./Program

clean:
    rm *.o Program

.PHONY: clean debug

但是当我将所有项目文件复制到文件夹中时,不会设置调试标志(使用#ifdef DEBUG 和 cout 进行测试)。我正在添加以下文件:

ind.hpp ind.cpp debug.hpp debug.cpp

我一开始以为 debug.* 可能是问题所在,但“.PHONY: clean debug”没有帮助。

Makefile 中更改为:

debug: $(OBJECTS)
    $(CXX) $(CXXFLAGS) -DDEBUG -o Program $(OBJECTS)

至:

debug: $(SOURCES)
    $(CXX) $(CXXFLAGS) -DDEBUG -o Program $(SOURCES)

原因是在构建 debug 目标的规则中,您只是 linking 目标文件,而不是 compiling-DDEBUG。通过此更改,您应该能够使用 -DDEBUG 标志进行编译。