Macros Autoconf宏从头文件读取define并写入config.h

Macros Autoconf宏从头文件读取define并写入config.h,macros,autoconf,Macros,Autoconf,我正在从传统的构建环境转换为使用自动工具的构建环境。我有一个旧的头文件,其中包含大量的配置值,还包括许多其他头文件。我正在尝试编写一个宏,它可以从旧版配置头中选择特定的定义值,并将它们写入config.h。我已经能够在下面编写宏来检查定义是否等于某个值并执行某些操作。我想添加一个步骤,自动将定义的值写入config.h AC_DEFUN([ZENO_CHECK_CONFIG], [ AC_CHECK_HEADERS([legacy_config.h]) A

我正在从传统的构建环境转换为使用自动工具的构建环境。我有一个旧的头文件,其中包含大量的配置值,还包括许多其他头文件。我正在尝试编写一个宏,它可以从旧版配置头中选择特定的定义值,并将它们写入
config.h
。我已经能够在下面编写宏来检查定义是否等于某个值并执行某些操作。我想添加一个步骤,自动将定义的值写入
config.h

AC_DEFUN([ZENO_CHECK_CONFIG],
    [
        AC_CHECK_HEADERS([legacy_config.h])
        AS_IF([test "x$ac_cv_header_legacy_config_h" = "xyes"],
            [
            AC_MSG_CHECKING([for definition of $1])
            AC_EGREP_CPP([test_true],
                [
#include <legacy_config.h>
#if defined($1) && $1 == $2
test_true
#endif
                ],
                [AC_MSG_RESULT([enabled])
                $3],
                [AC_MSG_RESULT([disabled])
                $4]
            )
            ]
        )
    ]
)
AC_DEFUN([ZENO_CHECK_CONFIG],
[
AC_检查_头([legacy_config.h])
假设([测试“x$ac\U cv\U标题\U遗留配置\U h”=“xyes”],
[
AC_MSG_检查([用于定义$1])
AC_EGREP_CPP([测试为真],
[
#包括
#如果定义了($1)&&$1==2
测试是否正确
#恩迪夫
],
[交流信息结果([已启用])
$3],
[交流信息结果([已禁用])
$4]
)
]
)
]
)
只需使用或可能使用AC\u DEFINE\u UNQUOTED:

...
            [AC_MSG_RESULT([enabled])
             AC_DEFINE($1, $2)
            $3],
            [AC_MSG_RESULT([disabled])
             AC_DEFINE($1, something)
            $4]
...

如果检查为true,这将起作用。但是,我希望写入define而不考虑该值。那么当检查为false时会发生什么?我希望将实际定义的值从旧版配置头写入
config.h
,而不考虑检查。实际上,只需将其从传统配置头“复制”到
config.h
。在这种情况下可能有用。