Obecnie pracuję nad projektem linuksowym z wykorzystaniem autotools. Kod jest przesyłany w SCM (Perforce), a my mamy skrypt configure, Makefile.am, Makefile.in - zwykły zestaw znaków automatycznego autotools. Ostatnio ktoś zmienił Makefile.am, ale zapomniał zregenerować Makefile.in; kiedy starałem się budować, mam ten błąd:Wersja automake (am__api_version) zakodowana na stałe w skrypcie konfiguracyjnym
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
widzę wersja automake jest ustalony w skrypcie configure (i wydaje się pochodzić z aclocal.m4):
am__api_version='1.11'
Więc myślę Potrzebuję automake-1.11 (nie 1.10, nie nowszego) do regeneracji pliku Makefile.in.
Dlaczego tak jest? Dlaczego powinniśmy być przywiązani do konkretnej wersji automake? W większości budujemy na Ubuntu 14.04, gdzie 1.14 jest zainstalowana domyślnie. Czy istnieje sposób poinformowania systemu kompilacji, aby po prostu używał dowolnej wersji programu automake? Czy może bezpiecznie usunąć definicję am__api_version z aclocal.m4?
chciałbym zdefiniować "zwykły" Autotools boilerplate być 'configure.ac' i' Makefile.am' .Celem tych dwóch plików jest wygenerowanie skryptu 'configure',' Makefile.in', 'Makefile' oraz różnych innych artefaktów obsługujących kompilację. Wygenerowane pliki nie muszą (w rzeczy samej nie powinny) zostać dodane do żadnej kontroli źródła. – rubicks