Página principal

Programando com GTKmm no Eclipse

From CInLUG

Conteúdo

Introdução

Neste tutorial vamos ver como usar a IDE Eclipse para programar com a biblioteca gráfica [GTKmm], que é um dos inúmeros wrappers para biblioteca livre GTK+. Apesar de escrita em Java, a arquitetura de plugins do Eclipse permite que ele seja adaptado para os mais diversos fins, inclusive programar em C ou C++. O plugin do Eclipse para programar em C/C++ se chama CDT (C/C++ Development Tooling). Para saber mais sobre programação C++ com GTK+ você pode se referir ao excelente (e atualmente de boa aparência) Tutorial GTKmm, este tutorial é bem atualizado e cobre até mesmo gráficos vetoriais com Cairo, além de ensinar como configurar o Dev-C++ para programar com GTKmm no MS Windows. E aqui o link da sempre necessária API do GTKmm. O Debian/Ubuntu é usado neste tutorial, mas tudo deve funcionar em qualquer outra distribuição, desde que você instale os softwares necessários.

Pacotes

Imagem:Package.png

Pacotes Necessários

  • eclipse-cdt
  • build-essential
  • libgtkmm-2.4-1c2a
  • libgtkmm-2.4-dev

É bem fácil instalar o Eclipse no Ubuntu, pois já existem pacotes para ele. Instale o pacote com o plugin de C/C++ e ele puxará todas as dependências para o uso do Eclipse:

$ sudo apt-get install eclipse-cdt

Caso não tenha instalado ainda o compilador gcc, inclua o pacote build-essential na linha do apt-get. E para usar libgtkmm para programação devemos incluir o pacote com sufixo -dev.

$ sudo apt-get install libgtkmm-2.4-1c2a libgtkmm-2.4-dev build-essential

É recomendada a instalação dos pacotes libgtkmm-2.4-doc e devhelp para ter uma fonte de consulta offline.

Após a instalação o Eclipse pode ser encontrado no menu Aplicações->Programação->Eclipse.

Eclipse

Apesar deste ser um tutorial passo-a-passo, alguma experiência com o Eclipse pode facilitar as coisas. Uma fonte possível é o Eclipse Project CDT (C/C++) Plugin TutorialImagem:Pdf.png. Agora, inicie o Eclipse e vamos em frente.

Criando Um Novo Projeto

Vá em File->New->Managed Make C++ Project e surgirá o diálogo de criação de projetos, escolha "Managed Make C++ Project", nomeie o projeto como "EclipseGtkmmDemo" e clique em Next. Você deverá escolher o tipo do projeto, desmarque "Debug", deixando apenas "Release". Num projeto pra valer, é muito recomendado deixar Debug, mas no nosso caso tirá-lo simplificará as explicações.

Quando o projeto for criado, não esqueça de desabilitar a irritante compilação automática, que entra em cena toda vez que você salva algum arquivo, para resolver isso desmarque o item de menu em Project->Build Automatically.

Clique com o botão direito no nome do Projeto, vá em New->Source File, e nomeie o arquivo como demo.cpp. E abaixo seu código:

  1. //main.cpp
  2. #include <gtkmm.h>
  3. #include <iostream>
  4.  
  5. void botaoClicado()
  6. {
  7. std::cout << "Hello World!" << std::endl;
  8. }
  9.  
  10. int main(int argc, char *argv[])
  11. {
  12. Gtk::Main kit(argc, argv);
  13.  
  14. Gtk::Window janela;
  15. Gtk::Button botao("Clique Me!");
  16.  
  17. janela.set_title("Eclipse/GTKmm Demo");
  18. janela.set_border_width(4);
  19. janela.set_default_size(200, 50);
  20.  
  21. janela.add(botao);
  22. botao.show();
  23.  
  24. botao.signal_clicked().connect(sigc::ptr_fun(botaoClicado));
  25.  
  26. Gtk::Main::run(janela);
  27. return 0;
  28. }
  29.  

Parâmetros de Compilação

Agora você precisa indicar ao compilador onde encontrar os cabeçalhos e bibliotecas de GTKmm, para poder construir sua aplicação. Para isso vá no menu Project->Properties, ou clique com o botão direito do mouse sobre o nome do projeto e então na opção "Properties". Na imagem a seguir estão os pontos que nos interessam nesta janela de diálogo.

Siga as setas vermelhas da imagem acima e clique primeiro em "Directories" da seção do compilador C++, e inclua o diretório /usr/include/gtkmm-2.4, onde estão os cabeçalhos de GTKmm.

Vá agora na seção "Miscellaneous" e diga os diretórios de cabeçalhos dos vários componentes do GTKmm espalhados pelo sistema... não nada disso, basta colocar um linha do pkg-config que tudo está resolvido. Não sabe para quê serve o pkg-config? Então veja Desenvolvimento em Linux com Debian/Ubuntu! =)
Retomando, na seção "Miscellaneous", vá em "Other flags", e acrescente `pkg-config --cflags gtkmm-2.4` ao final do que já estiver lá. O trecho do pkg-config é envolvido com crases, não aspas, e isso é importante. Veja Desenvolvimento em Linux com Debian/Ubuntu para saber o motivo. =D

Mude para seção "Miscellaneous" do item "GNU C++ Linker" e em "Linker flags" acrescente `pkg-config --libs gtkmm-2.4`, conforme a figura abaixo.

Compilando

Para compilar clique no item do menu Project->Build Project, ele deve dar uma saída assim:

**** Full rebuild of configuration Release for project EclipseGtkmmDemo ****

make -k clean all 
rm -rf  ./demo.d ./demo.o  EclipseGtkmmDemo
 
Building file: ../demo.cpp
Invoking: GCC C++ Compiler
g++ -I/usr/include/gtkmm-2.4 -O3 -Wall -c -fmessage-length=0 -I/usr/include/gtkmm-2.4
-I/usr/lib/gtkmm-2.4/include -I/usr/include/glibmm-2.4 -I/usr/lib/glibmm-2.4/include
-I/usr/include/gdkmm-2.4 -I/usr/lib/gdkmm-2.4/include -I/usr/include/pangomm-1.4
-I/usr/include/atkmm-1.6 -I/usr/include/gtk-2.0 -I/usr/include/sigc++-2.0
-I/usr/lib/sigc++-2.0/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
-I/usr/lib/gtk-2.0/include -I/usr/include/pango-1.0 -I/usr/include/cairo
-I/usr/include/atk-1.0 -odemo.o ../demo.cpp
Finished building: ../demo.cpp

Building target: EclipseGtkmmDemo
Invoking: GCC C++ Linker
g++ -lgtkmm-2.4 -lgdkmm-2.4 -latkmm-1.6 -lgtk-x11-2.0 -lpangomm-1.4 -lglibmm-2.4
-lsigc-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lfontconfig
-lXext -lXrender -lXinerama -lXi -lXrandr -lXcursor -lXfixes -lpango-1.0 -lcairo
-lX11 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 -oEclipseGtkmmDemo ./demo.o
Finished building target: EclipseGtkmmDemo

Build complete for project EclipseGtkmmDemo

As linhas mais verbosas são resultado da saída do pkg-config, aquele que evitou que você digitasse tudo isso.

Executando

Depois da compilação surgirá um item chamado "Binaries", dentro estará o executável "EclipseGtkmmDemo", clique nele com o botão direito, vá até a opção "Run As" e clique em "Run Local C/C++ Application".

O programa exemplo deverá rodar como abaixo:

Outras Coisas

O Eclipse examina os arquivos de cabeçalho encontrados no diretório indicado, em nosso caso /usr/include/gtkmm-2.4, e usa essas informações para proporcionar code completion. Contudo, pelo menos na máquina onde fiz os testes, demora uma eternidade. Não recomendo. :-\ Provavelmente para o Eclipse prover code complation para bibliotecas C++ é necessário alguma descrição formal e otimizada de suas classes. Mas não sei ao certo, estou apenas supondo.

Abaixo está um link para o projeto do Eclipse compactado num arquivo zip. Para importá-lo no seu workspace do Eclipse, vá em File->Import, escolha Archive File e indique o arquivo baixado.

Imagem:Go-down.png

EclipseGtkmmDemo.zip

Boa sorte com GTKmm no Eclipse, e lembre-se de usar o Debugger em seus trabalhos. Também não deixe de ler o Tutorial GTKmm, e se ficou interessado em programação com GTK em C++, pode assinar a lista de discussão da gtkmm.


Autor: Marcelo Lira

Imagem:Cc-small.png : Imagem:Cc-by.png Imagem:Cc-sa.png
Atribuição-Compatilhamento pela mesma licença 2.5

Ferramentas pessoais
Vistas