Utilizando GNU/Autotools em Projetos

Na elaboração de projetos de software utilizamos várias formas de padronizar a compilação e instalação. Neste artigo vou explicar como montar facilmente um autoconfigurador para sistemas GNU/Linux, onde podemos fazer a checagem das dependências necessárias para compilar nosso projeto.

[ Hits: 7.996 ]

Por: Alcione Ferreira em 26/10/2015 | Blog: http://www.alcionesytes.net


Compilando com o "make"



Para gerar nosso programa (executável), utilizaremos o comando "make", que irá, recursivamente, executar as instruções passadas nos Makefile.am que fizemos, e que geraram os Makefile correspondentes, vejamos agora o comportamento no projeto:

make
make all-recursive
make[1]: Entering directory '/home/alcione/Documentos/Artigo-Gnu-Autotools'
Making all in src
make[2]: Entering directory '/home/alcione/Documentos/Artigo-Gnu-Autotools/src'
g++ -DHAVE_CONFIG_H -I. -I.. -pthread -I/usr/include/cairomm-1.0 -I/usr/lib/cairomm-1.0/include -I/usr/include/gtkmm-2.4 -I/usr/lib/x86_64-linux-gnu/gtkmm-2.4/include -I/usr/include/atkmm-1.6 -I/usr/include/gtk-unix-print-2.0 -I/usr/include/gtk-2.0 -I/usr/include/gdkmm-2.4 -I/usr/lib/x86_64-linux-gnu/gdkmm-2.4/include -I/usr/include/giomm-2.4 -I/usr/lib/x86_64-linux-gnu/giomm-2.4/include -I/usr/include/pangomm-1.4 -I/usr/lib/x86_64-linux-gnu/pangomm-1.4/include -I/usr/include/glibmm-2.4 -I/usr/lib/x86_64-linux-gnu/glibmm-2.4/include -I/usr/include/sigc++-2.0 -I/usr/lib/x86_64-linux-gnu/sigc++-2.0/include -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng12 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng12 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 -g -O2 -MT Exemplo-main.o -MD -MP -MF .deps/Exemplo-main.Tpo -c -o Exemplo-main.o `test -f 'main.cpp' || echo './'`main.cpp
mv -f .deps/Exemplo-main.Tpo .deps/Exemplo-main.Po
g++ -g -O2 -lgtkmm-2.4 -latkmm-1.6 -lgtk-x11-2.0 -lgdkmm-2.4 -lgiomm-2.4 -lpangomm-1.4 -lglibmm-2.4 -lcairomm-1.0 -lsigc-2.0 -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype -L/usr/pgsql/lib -lpq -Wl,--as-needed -o Exemplo Exemplo-main.o -lgtkmm-2.4 -latkmm-1.6 -lgtk-x11-2.0 -lgdkmm-2.4 -lgiomm-2.4 -lpangomm-1.4 -lglibmm-2.4 -lcairomm-1.0 -lsigc-2.0 -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype -L/usr/pgsql/lib -lpq -Wl,--as-needed
make[2]: Leaving directory '/home/alcione/Documentos/Artigo-Gnu-Autotools/src'
make[2]: Entering directory '/home/alcione/Documentos/Artigo-Gnu-Autotools'
make[2]: Leaving directory '/home/alcione/Documentos/Artigo-Gnu-Autotools'
make[1]: Leaving directory '/home/alcione/Documentos/Artigo-Gnu-Autotools'


Pronto nosso programa já está compilado, observem que a quantidade de informação que é criada é muito maior que a que a configuramos. Essa é a mágica do autotools, você especifica o que precisa e o script inclui o necessário.

Vamos ver o resultado desse trabalho.

Testando execução "./src/Exemplo"

Para chamar o executável que criamos, partindo da raiz do nosso projeto, digitamos ./src/Exemplo, lembrando que esse exemplo foi o que definimos no src/Makefile.am.
Linux: Utilizando GNU/Autotools em Projetos
Pronto! Com isso encerramos esse artigo, espero que tenham aproveitado mais esse conhecimento!

Vou disponibilizar o projeto que trabalhamos gerado pela execução do comando "make dist" na pasta raiz do projeto: http://www.alcionesytes.net/uploads/projeto-1.0.0.tar.gz

Até o próximo artigo e viva o conhecimento!

Alcione Ferreira <sombra[at]alcionesytes.net>

Referências


Página anterior    

Páginas do artigo
   1. Estrutura padrão
   2. Arquivos configure.ac e Makefile.am
   3. Arquivos src/Makefile.am e src/main.cpp
   4. Gerando script "configure"
   5. Compilando com o "make"
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

LAMP no Fedora 17

Mantendo seus dados em segurança com o Keep

Hugin - Criando fotos panorâmicas navegáveis

Ubuntu Minimal para Usuários Comuns

MySQL, Apache2, PHP5, phpMyAdmin e o driver de conexão com o NetBeans no OpenSUSE 11.2

  
Comentários
[1] Comentário enviado por eduardomozart em 26/10/2015 - 09:44h

Parabéns pelo artigo! Muito bom!

[2] Comentário enviado por ksombrah em 27/10/2015 - 09:23h


[1] Comentário enviado por jaysponsored em 26/10/2015 - 09:44h

Parabéns pelo artigo! Muito bom!


Obrigado! O próximo será na mesma linha, mas voltado para bibliotecas


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts