Gtk3 en Windows

Hace mucho que no intentaba configurar mi ambiente de compilación "desde cero"; desde hace muchos años me acostumbré a Gtk 2 y a tener mi ambiente de trabajo listo para compilar programas.

Al tratar configurar mi ambiente para compilar algo con GTK3, me topé con varios problemas. Voy a discutirlos brevemente.

En todo caso, lo que se debe tener para compilar algo en GTK3, es prácticamente igual a GTK2 (en papel):

  1. Instalar librerías de GTK3
  2. Instalar un compilador adecuado
  3. Configurar el ambiente

Instalar GTK3

Según instrucciones de la página de GTK

https://www.gtk.org/download/windows.php

  • Bajar MSYS2: https://msys2.github.io/
  • Instalar GTK: pacman -S mingw-w64-x86_64-gtk3
  • Opcionalmente instalar otros componentes; por ejemplo:
    • Glade: pacman -S mingw-w64-x86_64-glade
    • Build tools: pacman -S mingw-w64-x86_64-toolchain base-devel


Bajando un paquete todo-incluido

http://www.tarnyko.net/dl/gtk.htm

Esta no fue una opción viable para mi porque yo necesitaba al menos la versión 3.16 de GTK3; y en esa página había hasta la 3.6.


Instalar una versión en particular

Me encontré un problema con mi instalación de MSYS, ya que la última versión de las DLLs tenían un problema. Para instalar una versión en particular, tuve que seguir ésta recomendación:

https://stackoverflow.com/questions/33969803/how-to-obtain-older-versions-of-packages-using-msys2

Básicamente se debe:

Por ejemplo, para bajar GTK3 version 3.22.8, descargué: http://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-gtk3-3.22.8-1-any.pkg.tar.xz


Instalar un compilador adecuado

Si las librerías que descargaste son de 32-bits; el compilador debe ser de 32-bits. Si las librerías son de 64-bits, se debe instalar un compilador de 64-bits.

Esto fue particularmente confuso, porque los mensajes del compilador no necesariamente son puntuales; pueden decir que "no se encuentra la función X" o que "no se encuentra la DLL".

Codeblocks

La instalación base de Code::blocks puede contener el compilador mingw de 32 bits; si quieres compilar para 64-bits, debes bajar otro compilador.

Una vez instalado, se debe agregar a Codeblocks: https://stackoverflow.com/questions/5604183/adding-compiler-to-codeblocks

([Settings] -> [Compiler and Debugger]. Seleccionar un compilador existente y seleccionar [Copy]. Seleccionar el tab de {Toolchain Executables} y cambiar directorio y herramientas correspondientes).

Instalador independiente

https://sourceforge.net/projects/mingw-w64/

MSYS

http://www.msys2.org/


* Creo que agregué a la variable de ambiente de PATH la ruta "C:\msys64\mingw64\bin"

Configurar el ambiente

Seleccionar compilador

Build options - Selected compiler

Otras opciones del compilador

-mms-bitfields
`pkg-config gtk+-3.0 glib-2.0 gio-2.0 gdk-pixbuf-2.0 --cflags`

Opciones del linker

`pkg-config gtk+-3.0 glib-2.0 gio-2.0 gdk-pixbuf-2.0 --libs`

Search directories

Compilador

C:\msys64\mingw64\include\gtk-3.0\gtk

Linker

C:\msys64\mingw64\lib