Odpowiedzi:
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
środki przedłużające że to wejście do configure
masażu, a nie ostatecznego pliku, który ma zostać użyty (np make
). 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
SUBDIRS = src
dist_doc_DATA = README.md
README.md
Some doc.
configure.ac
AC_INIT([automake_hello_world], [1.0], [bug-automake@gnu.org])
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
AC_PROG_CC
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([
Makefile
src/Makefile
])
AC_OUTPUT
src / Makefile.am
bin_PROGRAMS = autotools_hello_world
autotools_hello_world_SOURCES = main.c
src / main.c
#include <config.h>
#include <stdio.h>
int main (void) {
puts ("Hello world from " PACKAGE_STRING);
return 0;
}
Stosowanie
autoreconf --install
mkdir build
cd build
../configure
make
sudo make install
autoconf_hello_world
sudo make uninstall
To daje:
Hello world from automake_hello_world 1.0
Notatki
autoreconf --install
generuje kilka plików szablonów, które powinny być śledzone przez Git, w tym Makefile.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ć.
autoconf
i automake
: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 )
configure
, make
i sudo make install
:./configure # Creates Makefile (from Makefile.in).
make # Creates the application (from the Makefile just created).
sudo make install # Installs the application
# Often, by default its files are installed into /usr/local
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:
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).
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:
$]
configure.in Makefile.in
$] sudo autoconf
configure configure.in Makefile.in ...
$] sudo ./configure
Makefile Makefile.in
.in
skrót