autoconf 为您提供了一个config.h,它提供了诸如PACKAGE、PACKAGE_NAME、PACKAGE_STRING、PACKAGE_VERSION 和VERSION 等字符串宏。
(当我使用Argp 参数解析器时,我只是使用
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <argp.h>
const char *argp_program_version = PACKAGE_STRING;
const char *argp_program_bug_address = PACKAGE_BUGREPORT;
/* et cetera */
int main(int argc, char **argv) {
error_t argp_result = argp_parse(&argp, argc, argv, 0, 0, NULL);
if (argp_result) return argp_result;
/* et cetera */
}
然后--help、--version 等就会自动工作。)
你也可以添加
AC_CANONICAL_HOST
AC_DEFINE_UNQUOTED([CHOST], ["$host"], [Canonical host])
AC_CANONICAL_BUILD
AC_DEFINE_UNQUOTED([CBUILD], ["$build"], [Canonical build])
AC_CANONICAL_TARGET
AC_DEFINE_UNQUOTED([CTARGET], ["$target"], [Canonical target])
到您的configure.ac,如果您也想在您的config.h 中包含这些字符串宏。这些通常是 $arch-$vendor-$kernel-$libc 形式的字符串,其中
CHOST 是构建软件后将运行软件的平台,
CBUILD 是当前正在运行的平台构建软件,并且
CTARGET 是软件将运行的平台。
(除非您正在交叉编译或构建交叉编译工具链,否则这些都是相同的。)