gpt4 book ai didi

autotools - Autoconf:将更多内容放入 config.h 或生成 confdefs.h

转载 作者:行者123 更新时间:2023-12-05 07:44:02 26 4
gpt4 key购买 nike

我想将 Autoconf/Automake 添加到现有项目中。我需要做的一件事是将编译时定义(如 PREFIX)传递给程序。我似乎记得很久以前这东西出现在 config.h 中,但现在没有了。在 config.log 的最后,我看到了看起来像 configdefs.h 的内容,它正是我想要的。

如何让配置脚本为我创建文件 configdefs.h 或将其放入 config.h

这是我所拥有的:

自动生成器.sh:

autoheader && aclocal && automake -a -c -f && autoconf

生成文件.am:

AUTOMAKE_OPTIONS = foreign
CFLAGS = -g
LDFLAGS =
bin_PROGRAMS = foo
foo_SOURCES = foo.c

配置文件:

AC_PREREQ([2.69])
AC_INIT(foo, 1.0, joe@foo.com)
AM_INIT_AUTOMAKE
AC_CONFIG_SRCDIR([foo.c])

# Using the former instead of the latter AC_CONFIG_HEADERS results in
# automake complaining about lack of confdefs.h.in.
# autoheader doesn't help
#AC_CONFIG_HEADERS([config.h] [confdefs.h])
AC_CONFIG_HEADERS([config.h])

AC_PROG_CC
if test x$prefix = xNONE ; then
prefix=${ac_default_prefix}
fi

# I want this stuff to go into config.h or confdefs.h
AC_DEFINE([STUFF], ["blahblah"], [Stuff])
AC_DEFINE_UNQUOTED(DOCDIR, ["${prefix}/share/doc/foo"], [Documentation])

AC_CONFIG_FILES([Makefile])
AC_OUTPUT

最佳答案

想要使用 config.h 以外的东西的最常见原因是将库(及其附带的包含文件)移植到您的项目中。

在现实世界中,我将 Mozilla JS 引擎移植到我的项目中并选择创建一个新的 config.h 以免篡改 Mozilla 代码库(它有自己的 config.h )。

我在项目的 configure.ac 中添加了以下内容:

AC_CONFIG_HEADERS([js-moz-config.h])

然后将其添加到Makefile.am中的移植库中:

libmozjs_la_HEADERS = ... js-moz-config.h

然后为使用名为 js-config.h 的 Mozilla JS 引擎创建了我的项目特定的包含文件。

所以它看起来像这样:

libmozjs
+- jstypes.h (Mozilla)
+- js-config.h (my object type customization)
+- js-mozjs-config.h (Mozilla)

关于autotools - Autoconf:将更多内容放入 config.h 或生成 confdefs.h,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43190891/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com