aclocal.m4 不是由 aclocal 生成的
aclocal.m4 not generated by aclocal
简介
我正在尝试制作一个基本的 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
文件?
将您的 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 以及其他任何工具)。
简介
我正在尝试制作一个基本的 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
文件?
将您的 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 以及其他任何工具)。