【问题标题】:Managing debug and release builds with GCC make使用 GCC make 管理调试和发布版本
【发布时间】:2013-07-08 03:49:37
【问题描述】:

我正在尝试管理同一应用程序的两个不同版本。我有两个单独的 make 文件,一个用于调试,一个用于发布,它们都使用相同的源。我也有包装器 .bat 文件,其中包含要传递给 make 的参数等。这样做的重点是我希望能够为这两个文件保留我的目标文件,以便减少编译时间。

我尝试将目标文件的扩展名更改为 .od(而不是通常的 .o),但 make 不太喜欢这样。而且我不知道如何将这些对象放在单独的目录中,或者可能将 d 附加到文件名。

这通常是如何完成的?

【问题讨论】:

  • "make 不太喜欢那个" - 究竟是什么意思?如果您始终更改,那应该不是问题。您是自己编写 makefile,还是使用生成器?
  • 我都是手写的。我的意思是 make 不知道制作我的目标文件的规则。将扩展名改回.o 解决了这个问题,但使调试和发布目标文件具有相同的名称。

标签: c++ gcc makefile gnu


【解决方案1】:

Make 具有用于构建 .o 文件和各种其他类型文件的内置规则。但是,如果您想让它使用不同的非标准扩展来构建目标,您必须自己创建该规则:它不会是内置的。

幸运的是,这很简单。要创建从.cpp 文件(例如)构建.od 文件的规则,您可以编写:

%.od : %.cpp
        $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(DEBUG_CXXFLAGS) -o $@ -c $<

我在这里添加了DEBUG_CFLAGS,但你可以使用任何你喜欢的东西。

【讨论】:

  • 嗯,好的,谢谢。我使用的是.cpp.o: 规则,这可能是我出错的地方。
  • 这将从.cpp 构建一个.o。如果您想从.cpp 构建.od,那么.cpp.o 显然对您没有帮助。我在上面提供的模式规则语法将适用于 GNU make,但如果您必须使用其他版本的 make,它将无法正常工作。
猜你喜欢
  • 2010-09-07
  • 1970-01-01
  • 2011-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-13
  • 1970-01-01
  • 2018-01-31
相关资源
最近更新 更多