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
|
Pacotes Necessários
|
É 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 Tutorial
.
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:
//main.cpp #include <gtkmm.h> #include <iostream> void botaoClicado() { std::cout << "Hello World!" << std::endl; } int main(int argc, char *argv[]) { Gtk::Main kit(argc, argv); Gtk::Window janela; Gtk::Button botao("Clique Me!"); janela.set_title("Eclipse/GTKmm Demo"); janela.set_border_width(4); janela.set_default_size(200, 50); janela.add(botao); botao.show(); botao.signal_clicked().connect(sigc::ptr_fun(botaoClicado)); Gtk::Main::run(janela); return 0; }
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.
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 |











