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: 9.151 ]

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

Distribuições Linux no Samsung Chromebook ARM (XE303C12)

Venha pro lado de cá!

Formatando exibição de datas no Linux

Introdução ao APLINUX.com.br Mail Server 2005

Instalando o Debian em uma máquina virtual (VirtualBox)

  
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