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);
}