我正在尝试使用 make 编译目标。在我的代码中,我将前置条件设置为:
#ifdef MYDEBUG
(code to execute)
#endif
现在我的印象是,如果我做一个
make -DMYDEBUG target
代码应该被编译。但这似乎不起作用。我不知道出了什么问题以及出在哪里。 makefile 有层次结构,我试图查看它们,但坦率地说,我不知道我在寻找什么。上面的方法不应该起作用吗?或者可能在 makefile 中指定了一个选项来禁用如上所述设置 MYDEBUG 变量?或者我做错了什么?仅供引用,我的开发盒是 freebsd。
最佳答案
我不确定 make
的选项 -DMYDEBUG
是否有效或有什么用处。
当您使用#ifdef MYDEBUG
时,您需要MYDEBUG
作为定义的预处理器。这可以通过多种方式完成。
- 在代码中定义为
#define MYDEBUG
要求编译器通过指定适当的选项来定义它。对于
gcc
,您可以使用-DMYDEBUG
指定它。如果编写得当,makefile 通常还可以使用定义的环境变量(例如
CFLAGS
、LIBS
等)来传递给适当的命令。CFLAGS
用于指定任何与编译相关的选项。
关于c - 尝试编译目标。这是C代码。已放置#ifdef MYDEBUG。如何在编译期间将其作为设置传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16728126/