【问题标题】:aclocal.m4 not generated by aclocalaclocal.m4 不是由 aclocal 生成的
【发布时间】:2022-02-02 19:25:38
【问题描述】:

简介

我正在尝试制作一个简单的 autotools 项目。我正在改编本教程:
https://crypto.bi/autotools/

我拥有所有必需的文件(我认为)并运行aclocal --verbose,我得到了很多输出,其中大部分可能没有太大帮助,只保留我认为相关的一行:

...
aclocal: found macro AM_INIT_AUTOMAKE in /usr/share/aclocal-1.13/init.m4: 23
...

这个程序完成后,没有创建任何aclocal.m4,据我了解,应该有。

详情

运行aclocal后,如果我运行automake --add-missing,会出现以下错误:

configure.ac: error: no proper invocation of AM_INIT_AUTOMAKE was found.
configure.ac: You should verify that configure.ac invokes AM_INIT_AUTOMAKE,
configure.ac: that aclocal.m4 is present in the top-level directory,
configure.ac: and that aclocal.m4 was recently regenerated (using aclocal)
automake: error: no 'Makefile.am' found for any configure output
automake: Did you forget AC_CONFIG_FILES([Makefile]) in configure.ac?

文件

我有以下configure.ac

AC_INIT([YOURPROJECT], [1.0])
AC_CONFIG_SRCDIR([.])
AC_INIT_AUTOMAKE
AC_CONFIG_MACRO_DIRS([m4])
AC_PREREQ([2.69])
AC_CONFIG_HEADERS([config.h])
AC_PROG_CC
AC_CHECK_HEADERS([stdlib.h])
AC_CONFIG_FILES([Makefile])
AC_OUTPUT

还有以下Makefile.am

AM_LDFLAGS=
AM_CPPFLAGS=
ACLOCAL_AMFLAGS=-I m4
bin_PROGRAMS=main
main_SOURCES=main.c
main_LDADD=

问题

如何生成 aclocal.m4 文件?

【问题讨论】:

  • 作为一项规则,始终运行autoreconf 并担心要调用哪些工具以及以何种顺序调用,切勿调用autoconfautomakeaclocal 或“autoheader”或其他手动。此外,crypto.bi 示例使用非常过时的命令,非常奇怪的宏序列。网上有更好的介绍。

标签: autotools autoconf


【解决方案1】:

将您的 configure.ac 重写为有可能工作的内容:

AC_PREREQ([2.69])
AC_INIT([YOURPROJECT], [1.0])
AC_CONFIG_SRCDIR([my-main.c])
AC_CONFIG_MACRO_DIRS([m4])
AC_CONFIG_HEADERS([config.h])
AM_INIT_AUTOMAKE([])

AC_PROG_CC
AC_CHECK_HEADERS([stdlib.h])

AC_CONFIG_FILES([Makefile])
AC_OUTPUT

主要变化:

  • AM_INIT_AUTOMAKE 不以 AC_ 开头。找不到AM_INIT_AUTOMAKE 正是您的automake 错误消息所抱怨的。所以这应该可以生成一个aclocal.m4 文件。

其他更改:

  • AC_PREREQ 应该在第一行。
  • 使用AC_CONFIG_SRCDIR 的实际源文件。

另外,只需调用autoreconf 一次,让它负责按顺序调用哪些工具(aclocal、automake、autoconf、autoheader 等等)。

【讨论】:

  • 通过澄清这些更改足以诱导autoreconf -i 生成预期的./aclocal.m4 文件(这对我来说是正确的),可以改进此答案。
猜你喜欢
  • 2012-02-15
  • 2017-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多