2009-12-28 39 views
33

Jaki jest sens skryptu i pliku aclocal, w kontekście korzystania z autotools do konfigurowania plików źródłowych? Z tego co czytam, aclocal skanuje pliki makr dla makr, które są później używane przez automake. Nie rozumiem tego procesu dogłębnie, ale wydaje się, że funkcja skanowania mogła zostać właśnie wbudowana w automake.Jaki jest cel aclocal?

+0

@WilliamPursell, czy możesz wyjaśnić tagi "m4sh" i "m4sugar"? Jakie one są i w jaki sposób odnoszą się do tego pytania, gdy nie są nigdzie wymienione w pytaniu lub odpowiedziach? – Charles

+0

@Charles autoconf nie używa bezpośrednio m4, a raczej używa wrapperów 'm4sh' i' m4sugar'. Celem aclocal jest udostępnienie makr m4sh i m4sugar do autoconf. –

+0

@WilliamPursell, problem polega na tym, że pytanie nie jest ostatecznie o "m4sh" lub "m4sugar", ale o "aclocal" i autotools w ogóle. Nic tu nie widzę, ani w drugim pytaniu oznaczonym tymi tagami, które w rzeczywistości powodują, że znaczniki są istotne dla pytania. – Charles

Odpowiedz

36

Zobacz Alexandre Duret Lutz's Autotools tutorial, a musi przeczytać.

Zawiera schematy wyjaśniające w jaki sposób różne pliki projektu autotools współdziałają ze sobą i przez narzędzie, które wykorzystywane są: configure, config.h, config.status, aclocal.m4 itp

EDIT: John Calcote wyjaśnia również cel aclocal i aclocal.m4 w pierwszym rozdziale his book about Autotools: Chapter 1: A brief introduction to the GNU Autotools:

aclocal narzędzie jest właściwie udokumentowane przez podręcznikach GNU jako tymczasowe obejście przez pewien brak elastyczności w Autocon fa. Autoconf został zaprojektowany i napisany jako pierwszy, a kilka lat później pomysł na Automake został pomyślany jako dodatek do Autoconf. Autoconf nie został zaprojektowany tak, aby można go było rozszerzyć w skali wymaganej przez Automake.

...

Zasadniczo praca aclocal jest stworzenie pliku aclocal.m4 poprzez konsolidację różnych plików makro z zainstalowanych pakietów Autotool i lokalizacjach określonych przez użytkownika, tak że Autoconf mogą znaleźć je wszystkie w jedno miejsce.

...

Jednak najnowsza dokumentacja z obu zestawów narzędzi sugeruje, że cała aclocal/acinclude paradygmat jest już nieaktualne, na korzyść nowszego sposobu określania katalogu zawierającego makra m4 akta. Obecnie zaleca się utworzenie katalogu w katalogu projektu o nazwie po prostu m4 (acinclude wydaje się bardziej odpowiedni dla tego autora) i dodanie makr w postaci pojedynczych plików .m4 do tego katalogu. Wszystkie pliki w tym katalogu zostaną zebrane w pliku aclocal.m4, zanim Autoconf przetworzy twój plik configure.ac. Ostatecznie aclocal zostanie zastąpiony funkcjonalnością w samym Autoconf.

+2

Czy więc "aclocal" został zastąpiony przez funkcję Autoconf? –

8

W moim oprogramowaniu aclocal.m4 gromadzi różne niestandardowe makra Autoconf, których używam podczas kompilacji mojego oprogramowania. Jeden taki zestaw makr zajmuje się podsekundami - wybór najlepszego z dostępnych wariantów (według pewnego z góry ustalonego kryterium tego, co jest "najlepsze"); inny taki zestaw makr zajmuje się zawiłościami systemu kompilacyjnego IBM Informix ESQL/C, który ewoluował przez ostatnie dwie dekady (obsługuje ESQL/C 5.20, gdzie wersja 5.00 została wydana w 1990 roku, a także obsługuje najnowsze wersje produktu IBM Informix ClientSDK 3.50 - który, ku mojemu rozczarowaniu, zawiera ESQL/C 3.50, mimo że został wydany w 2008 roku).

Tak więc, aclocal.m4 jest dla lokalnych makr, które niekoniecznie są częścią zwykłego Autoconf, ale są używane przez twoje specyficzne oprogramowanie.

+7

+1, właśnie to jest jego przeznaczenie. Wiele osób po prostu upuszcza te bity w pliku configure.ac/configure.in, o którym wiadomo, że powoduje szaleństwo, ślepotę, a nawet syndrom Tourette'a dla opiekunów dystrybucji. –

0

Link do artykułu Johna Calcote podanego przez http://freesoftwaremagazine.com/articles/brief_introduction_to_gnu_autotools/. Skomentowałbym to stanowisko, ale moja reputacja jest tutaj zbyt niska.

Akapit niezbędne:

Zasadniczo praca aclocal jest stworzenie pliku aclocal.m4 poprzez konsolidację różnych plików makro z zainstalowanych pakietów Autotool i lokalizacjach określonych przez użytkownika, takie, które mogą znaleźć Autoconf je wszystkie w jednym miejscu.

+0

Podczas gdy ten link może odpowiedzieć na pytanie, lepiej umieścić tutaj istotne części odpowiedzi i podać link do odsyłacza. Odpowiedzi dotyczące linków mogą stać się nieprawidłowe, jeśli strona z linkami się zmieni. - [Z recenzji] (/ opinia/niskiej jakości-posts/18762464) – jfeferman