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?
Odpowiedz
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.
Czy więc "aclocal" został zastąpiony przez funkcję Autoconf? –
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.
+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. –
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.
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
- 1. Jaki jest cel preompompiledApp.config?
- 2. Jaki jest cel używania?
- 3. Jaki jest cel Rake?
- 4. Jaki jest cel JNDI
- 5. Jaki jest cel Mage_Core_Block_Template_Facade
- 6. Jaki jest cel IApplicationBuilder.New()
- 7. Jaki jest cel "() =>"
- 8. Jaki jest cel curdoc()?
- 9. Jaki jest cel vertexAttribPointer?
- 10. Jaki jest cel IAsyncStateMachine.SetStateMachine?
- 11. Jaki jest cel Ember.Container
- 12. Jaki jest cel layout.xml?
- 13. Jaki jest cel XNoImplicitPrelude?
- 14. Jaki jest cel CMakeScripts?
- 15. Jaki jest cel HttpHeaders.TryAddWithoutValidation?
- 16. Jaki jest cel ldexp?
- 17. Jaki jest cel git-mv?
- 18. Jaki jest cel Array.GetLowerBound (int)?
- 19. Jaki jest cel $ w XSLT
- 20. Jaki jest cel funkcji character_set_connection?
- 21. Jaki jest cel Pk anorma?
- 22. Jaki jest cel używania CommandType.Tabledirect
- 23. Jaki jest cel nazwy mojolicowej?
- 24. Jaki jest cel .git/log
- 25. jaki jest cel Thread.holdsLock (blokada)?
- 26. Jaki jest cel javax StreamSource
- 27. Jaki jest cel klasy Expression?
- 28. Jaki jest cel metody Thread.SpinWait?
- 29. Scala: jaki jest cel "przesłonięcia"
- 30. Jaki jest cel repozytorium artefaktów?
@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
@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. –
@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