Te dwa pliki są najczęściej widoczne w projektach open source.
Do czego służą i jak działają?
Makefile.am
Plik jest programator zdefiniowane i wykorzystywane jest przez automake
wygenerować Makefile.in
plik ( .am
podpórek na uto m ake). configure
Skrypt zazwyczaj postrzegane w tarballs źródłowych użyje Makefile.in
do wygenerowania Makefile
.
configure
Skrypt sam jest generowany z pliku o nazwie zdefiniowanej przez programistę albo configure.ac
albo configure.in
(niezalecane). Wolę .ac
(do uto c ONF), ponieważ odróżnia go od generowanych plików iw ten sposób mogę mieć zasady, takie jak , która biegnie . Ponieważ jest to plik generowany, zwykle nie jest przechowywany w systemie wersji, takim jak Git, SVN, Mercurial lub CVS, a raczej plik.Makefile.in
make dist-clean
rm -f *.in
.ac
Przeczytaj więcej na temat GNU Autotools . Przeczytaj informacje na temat make
i Makefile
pierwszy, a następnie dowiedzieć się o automake
, autoconf
, libtool
, itd.
.in
skrót.in
środki przedłużające że to wejście doconfigure
masażu, a nie ostatecznego pliku, który ma zostać użyty (npmake
). Jeśli zastanawiasz się, dlaczego wydaje się to „absurdalnie” skomplikowane, spróbuj przeczytać: stackoverflow.com/a/26832773/939557 Obecnie GitHub itp. Staje się wspólnym kanałem dystrybucji. Niektóre założenia Autoconf załamują się: ludzie zdobywają źródło bezpośrednio z narzędzia do kontroli kodu źródłowego, zamiast używać tarballa dystrybucji źródła utworzonego przez opiekunów.Prosty przykład
Bezwstydnie zaadaptowane z: http://www.gnu.org/software/automake/manual/html_node/Creating-amhello.html i przetestowane na Ubuntu 14.04 Automake 1.14.1.
Makefile.am
README.md
configure.ac
src / Makefile.am
src / main.c
Stosowanie
To daje:
Notatki
autoreconf --install
generuje kilka plików szablonów, które powinny być śledzone przez Git, w tymMakefile.in
. Należy go uruchomić tylko za pierwszym razem.make install
instaluje:/usr/local/bin
README.md
do/usr/local/share/doc/automake_hello_world
Na GitHub możesz wypróbować.
źródło
DEVELOPER działa
autoconf
iautomake
:1) autoconf - tworzy wysyłalny skrypt konfiguracyjny
(który później instalator uruchomi, aby utworzyć plik Makefile )
2) automake - tworzy wysyłalny plik danych Makefile.in
( konfiguracja zostanie później odczytana, aby utworzyć plik Makefile )
INSTALATOR biegnie
configure
,make
isudo make install
:MAPA WEJŚCIA / WYJŚCIA
Poniższy zapis jest z grubsza: dane wejściowe -> programy -> dane wyjściowe
DEVELOPER uruchamia te:
configure.ac -> autoconf -> configure (skrypt) --- (*. ac = a uto c onf)
configure.in -> autoconf -> configure (skrypt) --- (
configure.in
nieaktualne. Użyj config.ac)Makefile.am -> automake -> Makefile.in ----------- (*. Am = a uto m ake)
INSTALLER uruchamia te:
Makefile.in -> Konfiguracja -> Makefile (. * W = w pliku put)
Makefile -> make ----------> (umieszcza nowe oprogramowanie w plikach do pobrania lub katalogu tymczasowym)
Makefile -> make install -> (umieszcza nowe oprogramowanie w katalogach systemowych)
„ autoconf jest rozszerzalnym pakietem makr M4, które tworzą skrypty powłoki do automatycznego konfigurowania pakietów kodu źródłowego oprogramowania. Skrypty te mogą dostosowywać pakiety do wielu rodzajów systemów typu UNIX bez ręcznej interwencji użytkownika. Autoconf tworzy skrypt konfiguracyjny dla pakietu z plik szablonu zawierający listę funkcji systemu operacyjnego, z których pakiet może korzystać, w postaci wywołań makr M4 ”.
„ automake jest narzędziem do automatycznego generowania plików Makefile.in zgodnych ze standardami kodowania GNU. Automake wymaga użycia Autoconf.”
Instrukcje:
Darmowe samouczki online:
Przykład:
Główny plik configure.ac użyty do budowy LibreOffice ma ponad 12 000 wierszy kodu (ale w podfolderach znajduje się również 57 innych plików config.ac).
Z tego moja wygenerowana konfiguracja zawiera ponad 41 tys. Linii kodu.
I podczas gdy Makefile.in i Makefile są tylko 493 liniami kodu. (Ale w podfolderach jest także 768 dodatkowych plików Makefile.in).
źródło
referencja :
Makefile.am - plik wejściowy użytkownika do zautomatyzowania
configure.in - plik wejściowy użytkownika do autoconf
autoconf generuje config z configure.in
automake gererates Makefile.in z Makefile.am
configure generuje Makefile z Makefile.in
Na przykład:
źródło