我想将Autoconf / Automake添加到现有项目中。我需要做的一件事是将类似PREFIX
的编译时定义传递给程序。我似乎记得很久以前这些东西出现在config.h
中,但不再出现。在config.log
的最后,我看到configdefs.h
的内容看起来像我想要的内容。
如何让configure脚本为我创建文件configdefs.h
或将其放入config.h
?
以下是我所拥有的:
autogen.sh:
autoheader && aclocal && automake -a -c -f && autoconf
Makefile.am:
AUTOMAKE_OPTIONS = foreign
CFLAGS = -g
LDFLAGS =
bin_PROGRAMS = foo
foo_SOURCES = foo.c
configure.ac:
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
答案 0 :(得分:0)
要使用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)