2017-12-05 8 views
0

Ich versuche Makefile.am und configure.ac
zu schaffen, aber ich Fehler, wenn ich schreibe make dist oder make distcheck Makefile.am:Fehler machen distcheck

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

counfigure.ac:

AC_INIT([neuromz] , [1.0] , [[email protected]]) 

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 

Ich gebe den folgenden Befehl ein:

autoreconf -i 
./configure 
make distcheck 

das Ergebnis:

[email protected]:~/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 

, was der Fehler ist ???

+0

Bereits weist sie darauf, was der Fehler neuromz ist - 1,0 .tar.gz. Keine solche Datei oder das Verzeichnis, befindet Diese Datei in Ihrem Repo und sehen, warum es nicht vorhanden ist? – LethalProgrammer

+0

aber in den Tutorials, die ich es gelesen habe keine '.tar.gz' Dateien erstellt wurde
und wenn ich es erstellen wollen, was enthalten soll ?? –

Antwort

1

Das Problem ist hier:

AC_INIT([neuromz] , [1.0] , [[email protected]]) 

Denken Sie immer daran, dass Autoconf grundsätzlich ein Text Prozessor ist und dass Leerzeichen Teil des Textes ist es verarbeitet. Zitieren mit [] ist nur das - Zitat - nicht Abgrenzung der Argumentwerte. Die Argumente werden durch die Kommas in der Argumentliste begrenzt.

Autoconf ignores leading whitespace in macro arguments, aber keine nachgestellten Leerzeichen (obwohl das Handbuch letzteres nicht explizit herausruft). Die abschließenden Leerzeichen in diesen bestimmten Argumenten vermischen die Erstellungsregel für das Verteilungs-Tarball. Sie könnten argumentieren, dass Automake vorsichtigeres Zitat in generierten Makefiles anwenden sollte, und ich würde nicht damit streiten. Beachten Sie jedoch, dass das Ergebnis in diesem Fall wahrscheinlich nicht das ist, was Sie erwartet oder gewollt haben. In jedem Fall können Sie das Problem einfach durch Entfernen der hinteren Leerzeichen aus den Makroargumente lösen:

AC_INIT([neuromz], [1.0], [[email protected]])