在我的 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
目标的规则中,您只是链接
目标文件而不是编译
- DDEBUG
。通过此更改,您应该能够使用 -DDEBUG
标志进行编译。
关于c++ - 创建文件会中断 Makefile for C++ 中的 -DDEBUG 标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30202834/