GNU Autotools:AC_DEFINE不起作用

时间:2012-01-27 13:13:43

标签: autotools autoconf

我完全糊涂了,尝试了很多方法来测试它,但它仍然是疯了 我正在尝试定义一个C预处理器变量“DEBUG”(#define DEBUG)来激活一个开源项目中的调试日志记录,它使用GNU Autotools。所以我放了一行

AC_DEFINE(DEBUG, 1, [My description for DEBUG])
configure.ac 中的

但是什么? 重新生成config.h后

autoheader && ./config.status

我查看config.h的内容并看到这个

/* My description for DEBUG */  
/* #undef DEBUG */

这到底发生了什么?其他类似的C预处理器变量(由项目)以相同的方式定义。他们都出现了“#define”并且没有注释,为什么我的“#undef”会被注释掉? 所以我尝试了很多方法,不仅仅是这样,我模仿了项目中其他符号的定义方式。尝试各种,从1到TRUE,FALSE,各种变量,从“DEBUG”到“FOOBAR”,“KJJJ”....但它仍然这样,我完全感到沮丧。


更多信息:

在查看 config.h.in 时,我看到所有的行都是这样的:

#undef SOMEVARIABLE

(包括我的定义AND config.h 中有效显示#defined'd的那些。)

当我不运行 autoheader 并只将config.h.in中的变量行更改为

#define DEBUG

然后生成 config.h ,然后我的DEBUG变量在 config.h

中有效地出现#define'd

* Autoconf版本2.67
*我正在进行的项目是ibus

3 个答案:

答案 0 :(得分:3)

正在运行autoheader会修改config.h.in,但不会修改config.statusconfig.status不知道您对configure.ac所做的更改,并且不知道为DEBUG做替换。在您运行autoconf以及生成的configure脚本之前,它不会更新。

答案 1 :(得分:2)

只需使用autoreconf,而不是手动调用autoconfautomake等。

答案 2 :(得分:1)

请在[{1}}之前放置AC_DEFINE行。