错误使得distcheck

时间:2017-12-05 08:40:58

标签: makefile autotools

我正在尝试创建Makefile.amconfigure.ac
但是当我输入make distmake distcheck时,我会遇到错误 Makefile.am:

bin_PROGRAMS = neuromz
neuromz_SOURCES = neuromz.c neuromz.h ann.c ann.h
neuromz_CFLAGS = -lm

counfigure.ac:

AC_INIT([neuromz] , [1.0] , [mz32programmer@gmail.com])

AC_PREREQ([2.68])
AC_CONFIG_SRCDIR([neuromz.c])
AC_CONFIG_HEADERS([config.h])
#AC_CONFIG_AUX_DIR([build-aux])
AM_INIT_AUTOMAKE([1.11 -Wall -Werror])
AC_CONFIG_FILES([Makefile])

AC_SEARCH_LIBS([exp],[m])
AC_PROG_CC
AM_PROG_CC_C_O

AC_OUTPUT

我输入以下命令:

 autoreconf -i
 ./configure
 make distcheck

结果是:

mz@mz-32:~/programming/ctest/ANN$ make distcheck 
make  dist-gzip am__post_remove_distdir='@:'
make[1]: Entering directory '/home/mz/programming/ctest/ANN'
if test -d "neuromz--1.0 "; then find "neuromz--1.0 " -type d ! -perm -200 -exec chmod u+w {} ';' && rm -rf "neuromz--1.0 " || { sleep 5 && rm -rf  "neuromz--1.0 "; }; else :; fi
test -d "neuromz--1.0 " || mkdir "neuromz--1.0 "
test -n "" \
|| find "neuromz--1.0 " -type d ! -perm -755 \
-exec chmod u+rwx,go+rx {} \; -o \
  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
  ! -type d ! -perm -444 -exec /bin/bash /home/mz/programming/ctest/ANN/install-sh -c -m a+r {} {} \; \
|| chmod -R a+r "neuromz--1.0 "
tardir=neuromz--1.0  && ${TAR-tar} chof - "$tardir" | GZIP=--best gzip -c >neuromz--1.0 .tar.gz
gzip: .tar.gz: No such file or directory
Makefile:528: recipe for target 'dist-gzip' failed
make[1]: *** [dist-gzip] Error 1
make[1]: Leaving directory '/home/mz/programming/ctest/ANN'
Makefile:563: recipe for target 'dist' failed
make: *** [dist] Error 2

什么是错误???

1 个答案:

答案 0 :(得分:1)

问题在于:

AC_INIT([neuromz] , [1.0] , [mz32programmer@gmail.com])

请记住,Autoconf基本上是一个 text 处理器,空格字符是它处理的文本的一部分。引用[]只是引用 - 而不是划分参数值。参数由参数列表中的逗号分隔。

Autoconf ignores leading whitespace in macro arguments,但不是尾随空格(尽管手册没有明确地调用后者)。这些特定参数中的尾随空格碰巧搞砸了分发tarball的构建规则。您可能会争辩说Automake应该在生成的Makefile中应用更仔细的引用,我不会反驳。但请注意,在这种情况下,这样做的结果可能不是您所期望或想要的。无论如何,只需从宏参数中删除尾随空格即可解决问题:

AC_INIT([neuromz], [1.0], [mz32programmer@gmail.com])