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.978 ]

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


Arquivos src/Makefile.am e src/main.cpp



Arquivo src/Makefile.am

Diferente do Makefile.am da raiz o que está nesta pasta será um exemplo de montagem para a compilação, ou seja, aqui definimos qual será o nome do executável e suas dependências.

Todas as checagens e variáveis criadas no "configure.ac" podem ser utilizadas, vejamos o exemplo:

bin_PROGRAMS = Exemplo

Exemplodir = $(includedir)

Exemplo_SOURCES = main.cpp
Exemplo_HEADERS = bibliotecas.h

Exemplo_CPPFLAGS = $(CPPFLAGS) $(GTKMM_CFLAGS) $(PG_CPPFLGAS)
Exemplo_LDFLAGS = $(LIBS) $(LDFLAGS) $(GTKMM_LIBS) -L$(PG_LIBS) -lpq $(PG_LDFLAGS)
Exemplo_LDADD = $(LIBS) $(LDFLAGS) $(GTKMM_LIBS) -L$(PG_LIBS) -lpq $(PG_LDFLAGS)

bin_PROGRAMS - nesse rótulo definimos o nome do executável que será gerado, podem ser gerados mais de um executável, fazemos isso separando os nomes com espaço.

Os outros rótulos são formados com o nome do executável seguido se um sufixo, cada sufixo tem uma função, vejamos para que servem cada um:

dir - nesse rótulo informamos onde serão instalados os cabeçalhos (.h), geralmente utilizamos a variável já definida $(includedir).

_SOURCES - nesse rótulo listamos os arquivos-fonte da linguagem que serão compilados, cada arquivo deve ser separado do outro utilizando espaços.

_HEADERS - nesse rótulo listamos os arquivos cabeçalho (.h) que fazem parte do projeto, para serem incluídos no pacote e quando for instalado serão copiados para o caminho especificado no rótulo dir.

_CPPFLAGS - nesse rótulo listamos todas as variáveis checadas que tem informações para a compilação do objeto (.o), a principal é a $(CPPFLAGS), mas também devemos colocar as geradas pelo pkg-config, no nosso exemplo é a $(GTKMM_CFLGAS), as definidas pelo AC_SUBST também devem ser listadas, exemplo $(PG_CPPFLGAS).

_LDFLAGS e _LDADD - nesses dois rótulos listamos todas as variáveis checadas que tem informações para a linkagem do objeto gerando o executável, as principais são a $(LIBS) e $(LDFLAGS), mas também, como fizemos anteriormente, colocar as geradas pelo pkg-config e as definidas pelo AC_SUBST, no nosso exemplo $(GTKMM_LIBS), $(PG_LIBS) e $(PG_LDFLAGS).

Arquivo src/main.cpp

Vamos utilizar para exemplificar nosso projeto um exemplo retirado do site oficial do GTKmm.org que é a API para C++ que utilizo no desenvolvimento de sistemas desktop.

/**
  * main.cpp
  * Qua outubro 14 19:32:22 2015
  * Copyright 2015 Alcione Ferreira
  *
  */


#include
#include

using namespace std;

int main (int argc, char **argv)
  {
  Gtk::Main kit(&argc, &argv);
  Gtk::Window *janela;
  Gtk::Label *texto;

  janela = new Gtk::Window();

  janela->set_title(Glib::ustring("Olá Mundo!"));
  janela->set_size_request (200,200);
  texto = new Gtk::Label(Glib::ustring("Programa Exemplo!"));
  janela->add(*texto);
  janela->show_all();

  Gtk::Main::run(*janela);

  return (0);
  }

Página anterior     Próxima página

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

Filesystem do Nokia 6225 no Linux

Etherwake + wake on coioti

dstat - Ferramenta de Monitoramento no Linux

Como o Google Earth pode induzir a reinstalação de uma distro Linux

chkconfig - Adicionando o seu shell script

  
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