Ich arbeite derzeit an einem Linux-Projekt mit Autotools. Der Code wird in SCM (Perforce) übergeben und wir haben das Konfigurations-Skript, Makefile.am, Makefile.in - die übliche Autotools-Musterdatei. Kürzlich hat jemand Makefile.am geändert, aber vergessen Makefile.in zu regenerieren; wenn ich zu bauen versucht, habe ich diesen Fehler:automake version (am__api_version) in configure script fest programmiert
WARNING: `automake-1.11' is missing on your system. You should only need it if
you modified `Makefile.am', `acinclude.m4' or `configure.ac'.
You might want to install the `Automake' and `Perl' packages.
Grab them from any GNU archive site.
cd . && /bin/bash ./config.status Makefile depfiles
Ich sehe die auto Version wird im Configure-Skript fest einprogrammiert (und scheint von aclocal.m4 zu kommen):
am__api_version='1.11'
Also ich denke, Ich brauche automake-1.11 (nicht 1.10, nicht etwas neueres), um die Datei Makefile.in neu zu erstellen.
Warum ist das? Warum sollten wir an eine bestimmte Automake-Version gebunden sein? Wir bauen hauptsächlich auf Ubuntu 14.04 auf, wobei 1.14 die Standardversion ist. Gibt es eine Möglichkeit zu sagen, das Build-System einfach zu verwenden, welche Version von Automake installiert ist? Oder ist es sicher, vielleicht die Definition von am__api_version von aclocal.m4 zu entfernen?
Ich würde definieren „die üblichen Autotools vorformulierten“ zu sein 'configure.ac' und' Makefile.am' .Es ist der Zweck dieser beiden Dateien, das 'configure'-Skript, das' Makefile.in', das 'Makefile' und verschiedene andere Artefakte zu erzeugen, die den Build unterstützen. Generierte Dateien müssen nicht zu einer Quellcodeverwaltung hinzugefügt werden (und sollten auch nicht). – rubicks