0

我正在尝试使用 make 编译目标。在我的代码中,我将前置条件设置为:

#ifdef MYDEBUG
 (code to execute)
#endif

现在我的印象是,如果我做一个

make -DMYDEBUG target

代码应该被编译。但这似乎不起作用。而且我不知道出了什么问题以及在哪里。makefile 有层次结构,我试图查看它们,但坦率地说,我不知道我在寻找什么。上面不是应该工作吗?或者可能在 makefiles 中指定了一个选项来禁用如上所述设置 MYDEBUG 变量?或者我做错了什么?仅供参考,我的开发箱是 freebsd。

4

1 回答 1

1

我不确定是否可以-DMYDEBUG工作make或做任何有用的事情。

当你使用#ifdef MYDEBUG你需要MYDEBUG定义的预处理器。这可以通过多种方式完成。

  • 在代码中定义为#define MYDEBUG
  • 要求编译器通过指定适当的选项来定义它。因为gcc你可以用-DMYDEBUG.

  • 如果编写得当,makefile 通常也可以使用定义的环境变量,如CFLAGSLIBS来传递给适当的命令。

  • CFLAGS用于指定任何与编译相关的选项。

于 2013-05-24T05:51:06.237 回答