Como instalar o GTKMM 4 no Ubuntu 22.04

Até o momento desse artigo a única versão disponível no repositório é 3.0 .


Synfig Studio, feito com gtkmm

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! 😃


Dependências

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 .


Compilar e instalar o gtkmm-4.0

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

Verificando a 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!


Testando o gtkmm-4.0

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:

gtkmm-4.0 running

Aprenda C++

https://terminalroot.com.br/cpp


Links úteis


gtkmm cpp cppdaily


Compartilhe


Nosso canal no Youtube

Inscreva-se


Marcos Oliveira

Marcos Oliveira

Desenvolvedor de software
https://github.com/terroo


Crie Aplicativos Gráficos para Linux e Windows com C++

Aprenda C++ Moderno e crie Games, Programas CLI, GUI e TUI de forma fácil.

Saiba Mais

Receba as novidades no seu e-mail!

Após cadastro e confirmação do e-mail, enviaremos semanalmente resumos e também sempre que houver novidades por aqui para que você mantenha-se atualizado!