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

标签 c++ compilation makefile linker

在我的 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/

相关文章:

c++ - Eclipse (Nvidia NSight 7.0) C++ 计时自动完成

java - 从 openfire 插件创建 jar 文件

c - gmake (Gnu) to make (Cygwin) - 验证我的实现 [只有 3 个语句]

c++ - 加速 SDL2 的 makefile

c++ - seekg() 神秘地失败

c++ - Qt 编译 - 在 Windows 上使用 qmake

c++ - 在类中调用另一个构造函数作为全局

java - 我的类可以编译,但无法正确运行! (蓝杰)

c++ - 当函数在 GCC 中没有任何返回值时,如何强制执行错误?

makefile - grub_script.yy.c :2354:13: error: 'yy_fatal_error' defined but not used