Esses dois arquivos são vistos principalmente em projetos de código aberto.
Para que servem e como funcionam?
Makefile.am
é um arquivo definido pelo programador e é usado automake
para gerar o Makefile.in
arquivo (o que .am
significa um uto m ake). O configure
script normalmente visto em tarballs de origem usará o Makefile.in
para gerar a Makefile
.
O configure
script em si é gerado a partir de um arquivo definido pelo programador chamado configure.ac
ou configure.in
(obsoleto). Eu prefiro .ac
(para um uto c onf), pois o diferencia dos Makefile.in
arquivos gerados e, dessa forma, posso ter regras como a make dist-clean
que é executada rm -f *.in
. Como é um arquivo gerado, normalmente não é armazenado em um sistema de revisão como Git, SVN, Mercurial ou CVS, mas o .ac
arquivo seria.
Leia mais sobre o GNU Autotools . Leia sobre make
e Makefile
em primeiro lugar, em seguida, aprender sobre automake
, autoconf
, libtool
, etc.
.in
significa?.in
extensão significa que é uma entrada paraconfigure
massagear, não um arquivo final que deve ser usado (por exemplo, commake
). Se você está curioso para saber por que isso parece "ridiculamente" complicado, tente ler: stackoverflow.com/a/26832773/939557 Atualmente, com o GitHub, etc., tornando-se um canal de distribuição comum, algumas das suposições do autoconf estão quebrando: as pessoas estão obtendo a fonte diretamente da ferramenta de controle do código-fonte, em vez de usar um tarball de distribuição de origem criado pelos mantenedores.Exemplo simples
Adaptado descaradamente de: http://www.gnu.org/software/automake/manual/html_node/Creating-amhello.html e testado no Ubuntu 14.04 Automake 1.14.1.
Makefile.am
README.md
configure.ac
src / Makefile.am
src / main.c
Uso
Isso gera:
Notas
autoreconf --install
gera vários arquivos de modelo que devem ser rastreados pelo Git, inclusiveMakefile.in
. Ele só precisa ser executado na primeira vez.make install
instala:/usr/local/bin
README.md
para/usr/local/share/doc/automake_hello_world
No GitHub, você pode experimentar.
fonte
O DEVELOPER é executado
autoconf
eautomake
:1) autoconf - cria um script de configuração expedível
(que o instalador executará posteriormente para criar o Makefile )
2) automake - cria o arquivo de dados Makefile.in que pode ser entregue
(o qual configura posteriormente será lido para criar o Makefile )
Installer é executado
configure
,make
esudo make install
:MAPA DE ENTRADA / SAÍDA
A notação abaixo é mais ou menos: entradas -> programas -> saídas
DEVELOPER executa estes:
configure.ac -> autoconf -> configure (script) --- (*. ac = a uto c onf)
configure.in -> autoconf -> configure (script) --- (
configure.in
depreciado. Use configure.ac)Makefile.am -> automake -> Makefile.in ----------- (*. Am = a uto m ake)
O INSTALLER executa estes:
Makefile.in -> Configurar -> Makefile (. * Em = no arquivo de put)
Makefile -> make ----------> (coloca um novo software em seus downloads ou diretório temporário)
Makefile -> make install -> (coloca um novo software nos diretórios do sistema)
" autoconf é um pacote extensível de macros M4 que produzem scripts shell para configurar automaticamente pacotes de código-fonte de software. Esses scripts podem adaptar os pacotes a vários tipos de sistemas UNIX sem intervenção manual do usuário. O Autoconf cria um script de configuração para um pacote a partir de um arquivo de modelo que lista os recursos do sistema operacional que o pacote pode usar, na forma de chamadas de macro M4. "
" automake é uma ferramenta para gerar automaticamente arquivos Makefile.in em conformidade com os Padrões de Codificação GNU. Automake requer o uso do Autoconf."
Manuais:
Tutoriais online gratuitos:
Exemplo:
O principal configure.ac usado para compilar o LibreOffice tem mais de 12k linhas de código (mas também existem 57 outros arquivos configure.ac em subpastas.)
A partir disso, o meu configure gerado tem mais de 41k linhas de código.
E enquanto o Makefile.in e o Makefile são apenas 493 linhas de código. (Mas também existem 768 outros Makefile.in em subpastas.)
fonte
referência :
Makefile.am - um arquivo de entrada do usuário para automatizar
configure.in - um arquivo de entrada do usuário para autoconf
O autoconf gera o configure a partir do configure.in
automake gera o Makefile.in de Makefile.am
configure gera Makefile a partir de Makefile.in
Por exemplo:
fonte