创建文件会中断 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
标志进行编译。
在我的 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
标志进行编译。