Synfig Studio é um dos diversos software que foi feito com gtkmm
Nós já publicamos alguns vídeos sobre gtkmm, além de detalharmos e criarmos alguns apps com gtkmm e também com Glade no Curso de C++ Moderno Avançado, mas com a versão 3.
Clique aqui para assistir a série completa no canal do Youtube .
Mas o gtkmm-4.0 tem diversas novas melhorias e facilidades.
Nesse artigo vamos ver como compilar no Ubuntu 22.04 .
Antes de seguir esse tutorial, verifique se já está disponível a versão 4 no repositório, pois algumas distros já possui. Mas de qualquer forma servirá de aprendizado ou para novas versões! 😃
Instale as dependências de construção
O GNOME utliza por padrão o Meson, mas em todos os pacotes há alternativa para compilar com GNU Autotools, nesse caso vamos compilar tudo com Autotools:
É bom também possuir o gtkmm-3.0 para já resolver outras dependências. Além do Gtk4 .
sudo apt install build-essential git g++ autotools-dev libgtkmm-3.0-dev \
libgtkmm-3.0-doc mm-common libgtk-4-bin \
libgtk-4-common libgtk-4-dev libgtk-4-doc pkg-config
Agora vamos utilizar as versões atualizadas, sem elas não dá pra continuar, clique nos links se já houver uma versão mais recente, baixe a mais recente. Ele aceita essas versões ou superiores.
É necessário possuir o SigC++-3.07:
wget ftp://ftp.acc.umu.se/pub/gnome/sources/libsigc++/3.0/libsigc++-3.0.7.tar.xz
tar Jxvf libsigc++-3.0.7.tar.xz
cd libsigc++-3.0.7/
./autogen.sh --prefix=/usr/local
make
sudo make install
É necessário possuir o giomm-2.68 e para obtê-lo compilamos/instalamos a glibmm-2.68:
wget https://download.gnome.org/sources/glibmm/2.68/glibmm-2.68.2.tar.xz
tar Jxvf glibmm-2.68.2.tar.xz
cd glibmm-2.68.2/
./autogen.sh --prefix=/usr
make
sudo make install
É necessário possuir a versão mais recente do cairomm:
git clone https://github.com/freedesktop/cairomm
cd cairomm
./autogen.sh --prefix=/usr
make
sudo make install
E por final o pangomm-2.50:
wget https://download.gnome.org/sources/pangomm/2.50/pangomm-2.50.0.tar.xz
tar Jxvf pangomm-2.50.0/
cd pangomm-2.50.o/
./autogen.sh --prefix=/usr
make
sudo make install
Se quise ver o caminho onde todos são instalados veja aqui .
Faça o download e verifique a hash
wget https://download.gnome.org/sources/gtkmm/4.6/gtkmm-4.6.1.tar.xz
wget https://download.gnome.org/sources/gtkmm/4.6/gtkmm-4.6.1.sha256sum
sha256sum -c --ignore-missing gtkmm-4.6.1.sha256sum
Se aparecer:
gtkmm-4.6.1.tar.xz: SUCESSO
é porque está tudo certo e podemos proceder, caso contrário faça novamente o download dos arquivos.
Descompacte, compile e instale
tar Jxvf gtkmm-4.6.1.tar.xz
cd gtkmm-4.6.1
./autogen.sh --prefix=/usr
make
sudo make install
libsigc-3.0.so
Rode o comando:
ls /usr/lib/libsigc-3*
Se não encontrar nada, CRIE esses links simbólicos:
sudo ln -s /usr/local/lib/libsigc-3.0.so.0.0.0 /usr/lib/libsigc-3.0.so.0.0.0
sudo ln -s /usr/local/lib/libsigc-3.0.la /usr/lib/libsigc-3.0.la
sudo ln -s /usr/local/lib/libsigc-3.0.so /usr/lib/libsigc-3.0.so
sudo ln -s /usr/local/lib/libsigc-3.0.so.0 /usr/lib/libsigc-3.0.so.0
Se algum deles não houver em
/usr/local/lib
, basta ignorar e criar somente dos que existem.
Isso resolverá problemas ao rodar nosso programa!
Crie um arquivo de nome qualquer, exemplo main.cpp
e insira o conteúdo abaixo:
#include <gtkmm.h>
class MyWindow : public Gtk::Window {
public:
MyWindow();
};
MyWindow::MyWindow(){
set_title("Basic application");
set_default_size(800, 450);
}
int main(int argc, char ** argv){
auto app = Gtk::Application::create("org.gtkmm.examples.base");
return app->make_window_and_run<MyWindow>(argc, argv);
}
Compile e rode:
g++ main.cpp $(pkg-config gtkmm-4.0 --cflags --libs)
./a.out
Se todas as etapas foram seguidas corretamente, aparecerá essa janela: