Autotools AC_DEFINE 不起作用

标签 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

(包括我的定义和config.h 中有效#defined 的定义。)

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

#define DEBUG

然后生成 config.h,然后我的 DEBUG 变量在 config.h 中有效 #define 出现

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

最佳答案

运行 autoheader 会修改 config.h.in,但不会修改 config.statusconfig.status 不知道您对 configure.ac 所做的更改,也不知道要对 DEBUG 进行替换。在您运行 autoconf 和生成的 configure 脚本之前,它不会更新。

关于Autotools AC_DEFINE 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9033758/

相关文章:

operating-system - 使用当前的 autotools 移植 Newlib

autotools - 更改configure.ac中的*FLAGS与使用子项目进行缓存

gcc - 我是否正确使用了 libtool?

linux - 错误 : Package requirements (libprotobuf-c >= 1. 0.1) 未满足

c++ - 在 AC_CHECK_HEADER 不改变预处理器之前改变编译器

c - Autoconf 检查 struct flock

autotools - Makefile.am 创建空目录

使用 Autoconf 为 ARM 交叉编译

c++ - automake 1.12 更改了 bison/yacc 输出名称,向后不兼容的更改?

c - 如何为同一 autotools 项目中的两个程序设置不同的构建选项