Как установить gtk на windows

Setting up GTK for Windows

GTK and Windows

Note: These instructions are intended for developers wanting to create Windows applications based on GTK, not for end-users. On Windows, GTK applications are typically bundled with GTK already, so end-users do not need to worry about how to install GTK itself.

There are various methods to install GTK on Windows development machines.

  • MSYS2

    This method is based on the packages provided by MSYS2, which provides a UNIX-like environment for Windows. Both of these repositories also provide packages for a large number of other useful open source libraries.

  • gvsbuild

    This method provides scripts to build the GTK stack from source and outputs libraries and tools that can be consumed by Visual Studio or Meson based projects.

We assume that you are using Windows 7 or later. For older versions of Windows, you will need to do a custom build of older versions of GLib and GTK.

Using GTK from MSYS2 packages

Installation

The MSYS2 project provides a UNIX-like development environment for Windows. It provides packages for many software applications and libraries, including the GTK stack. If you prefer developing using Visual Studio, you should use gvsbuild instead.

In MSYS2 packages are installed using the pacman package manager.

Note: in the following steps, we will assume you’re using a 64-bit Windows. Therefore, the package names include the x86_64 architecture identifier. If you’re using a 32-bit Windows, please adapt the instructions below using the i686 architecture identifier.

Step 1.: Download the MSYS2 installer that matches your platform and follow the installation instructions.

Step 2.: Install GTK4 and its dependencies. Open a MSYS2 shell, and run:

pacman -S mingw-w64-ucrt-x86_64-gtk4

If you want to develop with GTK3, run:

pacman -S mingw-w64-ucrt-x86_64-gtk3

Step 3. (optional): If you want to develop a GTK application in C, C++, Fortran, etc, you’ll need a compiler like GCC and its toolchain:

pacman -S mingw-w64-ucrt-x86_64-toolchain base-devel

If you want to develop a GTK application in Python, you need to install the Python bindings:

pacman -S mingw-w64-ucrt-x86_64-python-gobject

If you want to develop a GTK application in Vala, you will need to install the Vala package:

pacman -S mingw-w64-ucrt-x86_64-vala

Building and distributing your application

Once you have installed the GTK as above, you should have little problem compiling a GTK app. In order to run it successfully, you will also need a GTK theme. There is some old builtin support for a Windows theme in GTK, but that makes your app look like a Windows 7 app. It is better to get a Windows 10 theme, for instance the Windows 10 Transformation Pack.

Step 1. Copy the icon assets from the Windows 10 Transformation Pack repository in a folder under your installation folder, under share/themes/Windows10:

  • for the GTK4 assets, copy the contents of the gtk-4.0 folder under share/themes/Windows10/gtk-4.0
  • for the GTK3 assets, copy the contents of the gtk-3.20 folder under share/themes/WIndows10/gtk-3.0

Step 2. You also need to copy the icons from the Adwaita theme, which you can download from the GNOME sources.

Step 3. Perform the same steps for the hicolor icons, which are the mandatory fallback for icons not available in Adwaita.

Step 4. To make GTK pick up this theme, put a file settings.ini under the etc folder in your installation folder:

  • for GTK4, use etc/gtk-4.0/settings.ini
  • for GTK3, use etc/gtk-3.0/settings.ini

The settings.ini file should contain:

[Settings]
gtk-theme-name=Windows10
gtk-font-name=Segoe UI 9

Step 5. To top it all off, run the glib-compile-schemas utility provided by GLib to generate the compiled settings schema in your installation folder:

glib-compile-schemas share/glib-2.0/schemas

Step 6. You can then zip up your installation folder, or use an installer generator to do that for you, and distribute the result.

You may use MSYS2 to build your GTK application and create an installer to distribute it. Your installer will need to ship your application build artifacts as well as GTK binaries and runtime dependencies.

Legal notes on distributing GTK with your application

You are welcome to redistribute GTK binaries, including applications that bundle them, on other web sites, CD-ROM, and other media. You don’t have to ask for permission. That’s one of the points of Free Software.

One important thing that the GNU licenses require is that you must also redistribute the source code on request. This usually means at least the gettext, GLib, GTK, Pango and ATK sources.

Step 1: Install MSYS2

Download the MSYS2 installer and follow the installation instructions: http://www.msys2.org/

Step 2: Install GTK+3

Open a MSYS2 shell, and run: pacman -S mingw-w64-x86_64-gtk3

Step 3: Modify PATH variable so that the library can be found

  • Open up Control Panel
  • Go to System and Security > System
  • Click on the Advanced system settings link
  • Click on Environment Variables… button
  • Under System variables find the Path variable and select it
  • Click the Edit button
  • Add either ;C:\msys64\mingw64\bin or ;C:\msys32\mingw32\bin to the end of the variable, depending on your system architecture
  • Click OK, and you are done
  • Restart your system for the changes to apply

Введение в GTK

Последнее обновление: 19.01.2025

Настольные приложения с графическим интерфейсом представляют один из наиболее распространенных типов приложений, предоставляя пользователю удобный интерфейс для выполнения различных задач.
Для создания графического интерфейсов могут применяться различные инструменты. Для создания графических приложений на языке Си один из наиболее популярных таких инструментов является GTK. В целом
GTK представляет библиотеку для создания графических пользовательских интерфейсов

GTK начал развиваться как часть графического редактора GIMP еще в 90-е годы 20-го века. Собственно сам акроним GTK расшифровывается как «Gimp ToolKit».
Однако по мере развития GTK вышел за рамки проекта GIMP и превратился в самостоятельный инструментарий для создания пользовательского интерфейса. В 1998 году вышла первая версия GTK. На сеголняшний день GTK
является одним из наиболее используемых инструментов для создания пользовательского интерфейса. Например, на основе GTK построены рабочие окружения GNOME и Xfce.

Стоит отметить, что GTK постоянно развивается, один функционал добавляется, другой объявляется устаревшим или удаляется. Текущей версией является версия 4, которая вышла 16 декабря 2020 года и в
рамках которой постоянно выходят подверсии. И хотя какие-то принципы, виджеты остаются одними и те же от версии к версии, однако между отдельными версиями нет полной совместимости. Так, код написанный под GTK3 может не работать
под GTK4. В данном руководстве мы будет рассматривать именно последнюю версию — GTK 4 (на момент написания текущей статьи это подверсия GTK 4.17.2)

Также стоит отметить, что несмотря на то, что изначально GTK применялся на Linux, сейчас это полноценный кроссплатформенный тулкит, который позволяет разрабатывать графические приложения под все основные операционные системы, в том числе
под Windows и MacOS и даже Android.

GTK выпускается на условиях GNU Library General Public License, которая допускает гибкое лицензирование клиентских приложений. Сам исходный код доступен в репозитории на Gitlab по адресу
https://gitlab.gnome.org/GNOME/gtk/-/tree/main

GTK имеет основанную на C объектно-ориентированную архитектуру, которая обеспечивает максимальную гибкость и переносимость. Хотя основным языком программирования для использования GTK является язык С, но также существуют привязки для многих других языков, включая C++, Python, JavaScript, Rust, Go и т.д.

Основным строительным блоком интерфейса на GTK являются виджеты. Все, из чего состоит графический интерфейс — окно, кнопка, текстовые поля — это все виджеты. Виджеты организованы в иерархию. Виджет окна является основным контейнером, который вмещает все остальные виджеты. Причем фреймворк GTK уже из коробки предоставляет всю необходимую палитру виджетов для разных задач. Нам лишь остается их использовать.
Таким образом, GTK упрощает создание богатых графических пользовательских интерфейсов.

GTK управляется событиями. GTK прослушивает такие события, как нажатие кнопки, и передает событие приложению, а приложение в ответ на событие выполняет некоторое действие.

Одной из сильных сторон GTK является примение тем. Благодаря темам можно изменить внешний вид каждого виджета в GTK. Причем настройка внешнего вида, дизайн отделены от
построения программной логики.

Фреймворк GTK состоит из трех основных компонентов:

  • GDK: уровень абстракции, который позволяет GTK поддерживать несколько оконных систем. GDK предоставляет возможности оконной системы в Wayland, X11, Microsoft Windows и Apple macOS.

  • GSK: API для создания графа сцены из операции рисования, называемой «узлами», и его рендеринга с использованием различных бэкэндов. GSK предоставляет рендереры для OpenGL, Vulkan и Cairo.

  • GTK: набор инструментов GUI, который содержит элементы пользовательского интерфейса, менеджеры компоновки, типы хранения данных для эффективного использования в приложениях с графическим интерфейсом и т.д.

Также следует отметить, что GTK зависит от ряда библиотек:

  • GLib: библиотека утилит общего назначения, не специфичная для графических пользовательских интерфейсов. GLib предоставляет множество полезных типов данных, макросов, преобразований типов, строковых утилит, файловых утилит и т.д.

  • GObject: библиотека, которая предоставляет систему типов, набор основных типов, включая тип объекта и систему сигналов.

  • GIO: современный, простой в использовании API для работы с виртуальной файловой системой, который содержит абстракции для файлов, дисков, томов, потокового ввода-вывода, а также сетевое программирование и IPC через DBus.

  • Cairo: библиотека 2D-графики с поддержкой нескольких устройств вывода.

  • OpenGL: основная среда для разработки переносимых, интерактивных приложений 2D- и 3D-графики.

  • Vulkan: новый графический API, который можно считать преемником OpenGL.

  • Pango: библиотека для интернационализации текста. Она построена на основе объекта PangoLayout, который представляет абзац текста. Pango предоставляет движок для GtkTextView, GtkLabel, GtkEntry и всех виджетов GTK, отображающих текст.

  • gdk-pixbuf: небольшая портативная библиотека, которая позволяет создавать объекты GdkPixbuf («пиксельный буфер») из изображений. GdkPixbuf можно использовать в сочетании с виджетами, такими как GtkImage, для вывода изображений.

  • graphene: небольшая библиотека, которая предоставляет векторные и матричные типы данных и операции. Graphene предоставляет оптимизированные реализации с использованием различных наборов инструкций SIMD, таких как SSE и ARM NEON.

Установка GTK

Установка GTK на Linux

Для работы с GTK на Linux нам надо установить соответствующий пакет:

  • Для Debian/Ubuntu это пакет libgtk-4-dev

    sudo apt install libgtk-4-dev
  • Для Fedora это пакет gtk4-devel:

    dnf install gtk4-devel

Установка GTK на Windows

Для создания приложений на GTK на Windows нам потребуется MSYS.
Проект MSYS2 предоставляет UNIX-подобную среду разработки для Windows. Он предоставляет пакеты для многих программных приложений и библиотек, включая стек GTK.

Итак, загрузим установщик MSYS с сайта https://www.msys2.org/

После загрузки запустим программу установки:

Установка пакета mingw-w64 и msys2 на Windows

На первом шаге установки будет предложено установить каталог для установки. По умолчанию это каталог C:\msys64:

Установка компиляторов Си MSYS2 на Windows

Оставим каталог установки по умолчанию (при желании можно изменить). На следующем шаге устанавливаются настройки для ярлыка для меню Пуск, и затем собственно будет произведена установка.
После завершения установки нам отобразить финальное окно, в котором нажмем на кнопку Завершить

Установка компиляторов MSYS2 на Windows

Теперь нам надо установить собственно GTK и все его зависимости. Для этого в папке установки MSYS (по умолчанию C:/msys64)
надо найти и запустить файл usrt_64.exe:

компиляторы MSYS2.exe на Windows

В MSYS2 пакеты устанавливаются с помощью менеджера пакетов pacman. И для установки GTK в открывшуюся консоль введем команду

pacman -S mingw-w64-ucrt-x86_64-gtk4

Установка GTK для создания графических приложений на С с помощью MSYS2.exe на Windows

Также для разработки на С нам потребуется установить еще пару пакетов

pacman -S mingw-w64-ucrt-x86_64-toolchain base-devel

Первое приложение

Создадим новый файл, допустим, он будет называться «hello.c», и определим в нем следующий код:

#include <gtk/gtk.h>

int main (int argc, char **argv)
{
    // инициализируем набор виджетов
    gtk_init ();

    // создаем главное окно приложения
    GtkWidget *window = gtk_window_new();

    // настройка элементов пользовательского интерфейса
    // в данном случае просто устанавливаем заголовок окна
    gtk_window_set_title (GTK_WINDOW (window), "METANIT.COM");
    // отображаем окно
    gtk_window_present (GTK_WINDOW (window));

    // запускаем цикл прослушивания событий и взаимодействуем с пользователем
    //выходим из цикла, когда все окна приложения будут закрыты
    while (g_list_model_get_n_items (gtk_window_get_toplevels ()) > 0)
        g_main_context_iteration (NULL, TRUE);
    // когда окно приложения закрыто, выходим из приложения
    return 0;
}

Это самый простейший код графического приложения GTK, которое просто отображает окно. Рассмотрим данный код. Прежде всего подключаем заголовочный файл gtk/gtk.h, который содержит необходимые определения функций и виджетов GTK:

#include <gtk/gtk.h>

Для использования виджетов GTK необходимо инициализироватьэти виджеты помощью вызова

gtk_init()

Данный метод подключается к оконной системе и выполняет ряд дополнительных задач инициализации.

Основной графического интерфейса являются окна. И после инициализации виджетов мы создаем главное окно приложения:

GtkWidget *window = gtk_window_new();

Для создания окна вызывается функция gtk_widget_new(), которая возвращает указатель на тип GtkWidget

После создания окна мы можем настроить его стилевые характеристики, добавить в него другие виджеты. Но в данном случае просто устанавливаем заголовок:

gtk_window_set_title (GTK_WINDOW (window), "METANIT.COM");

Для установка заголовка окна применяется функция gtk_window_set_title(). В качестве первого параметра в функцию передается окно в виде объекта
GtkWindow. Причем поскольку окно
представляет тип GtkWidget, то нам надо его привести к типу GtkWindow — для этого применяется выражение GTK_WINDOW (window). Второй параметр функции — собственно заголовок в виде строки.

Настроив окно, отображаем его c помощью функции gtk_window_present()

gtk_window_present (GTK_WINDOW (window));

Для взаимодействия с пользователем GTK использует событийную модель. Для запуска прослушивания сообщений мы запускаем цикл:

while (g_list_model_get_n_items (gtk_window_get_toplevels()) > 0)
        g_main_context_iteration (NULL, TRUE);

Выражение g_list_model_get_n_items (gtk_window_get_toplevels ()) вычисляет количество отображаемых окон приложения. То есть когда это количество станет равным 0 (например,
пользователь закроет главное окно), то произойдет выход из цикла.

Функция g_main_context_iteration() проверяет, есть ли какие-то события, которые надо обработать (например, нажатие кнопки). Значение второго параметра —
TRUE позволяет ожидать возникновения событий. То есть, когда в приложении не происходит никаких событий, приложение будет их ожидать.

Когда пользователь закроет окно, вместе с этим завершит работу и все приложение.

Построение и запуск приложения

Построение и запуск приложения на Linux

Чтобы скомпилировать приложение GTK, вам нужно указать компилятору, где найти файлы заголовков и библиотеки GTK. Это делается с помощью утилиты pkg-config. Так, перейдем в консоли к папке с исходным файлом и далее для компиляции приложения выполним команду

gcc $(pkg-config --cflags gtk4) -o hello hello.c $(pkg-config --libs gtk4)

В итоге в папке с файлом «hello.c» появится новый файл «hello». Запустим его:

Построение и запуск приложения на Windows

Если целевая ОС — Windows, то откроем консоль MSYS, запустив приложение ucrt64.exe. С помощью команды cd перейдем в нем к папке с исходным файлом (допустим, исходный файл располагается в папке C:/c):

cd c:\c

Далее для компиляции приложения выполним команду

gcc $(pkg-config --cflags gtk4) -o hello hello.c $(pkg-config --libs gtk4)

Компиляция графического приложения GTK на С с помощью MSYS2.exe на Windows

В итоге в папке с файлом «hello.c» появится новый файл «hello» (hello.exe на Windows), который мы можем запустить:

На Windows по умолчанию запускаеся консольное приложение, которое запускает окно приложения. Чтобы скрыть консоль, надо при компиляции добавить флаг -mwindows

gcc $(pkg-config --cflags gtk4) -mwindows -o hello hello.c $(pkg-config --libs gtk4)

Install GTK4 on Windows11

Contents

  • Install GTK4 on Windows11
    • 1. Download and install Msys2
    • 2. Install GTK4 and Mingw-toolchain
    • 3. Setting Path
    • 4. Hello world
  • Summary

This is a guide to install and config GTK4 on Windows 11.

Note

All steps have been tested in Sandbox:

Edition Windows 11 Enterprise

Version 22H2

OS build 22621.1848

1. Download and install Msys2

This tutorial uses the default installation path, if you use a custom one, you need to pay attention when setting PATH later

Download from here, and install

After clicking Finish, the command line interface will pop up. According to the documentation of Msys2, we first install gcc:

pacman -S mingw-w64-ucrt-x86_64-gcc

Enter(Y) to install
/images/Msys2_install.png

Hint

Shift+Ins is the shortcut to paste in Msys2 Shell.

3. Setting Path

Edit System Variable (Follow here)

Add Your path to msys2mingw64bin, as default it’s C:\msys64\mingw64\bin.

Add Your path to msys2usrbin, as default it’s C:\msys64\usr\bin.

Note

Follow the sequence above, as Windows will follow the sequence on PATH table.

This will affect our latter input commands pkg-config and mkdir.

Given that we need to use make, however, Msys2 will name it as «mingw32-make.exe».

So we go to the directory we just put in PATH (C:\msys64\mingw64\bin), find the «mingw32-make.exe» and rename to «make.exe» (or create copy).

Now, when we open cmd or powershell, and type make -v, it works!

/images/cmd_make.png

Then, we try pkg-config —cflags —libs gtk4. We expect to have output like this:

/images/cmd_pkg-config.png

Hint

If not… «Follow» this

then, open Msys2 shell, run

cp -r /mingw64/lib/pkgconfig/* /usr/share/pkgconfig/

to copy «gtk4.pc» to the path that pkg-config can find.

4. Hello world

Open a new folder, and create a new file called demo.c.

We use the demo from GTK:

 
static void activate(GtkApplication* app, gpointer user_data) {
        GtkWidget* window;

        window = gtk_application_window_new(app);
        gtk_window_set_title(GTK_WINDOW(window), "Window");
        gtk_window_set_default_size(GTK_WINDOW(window), 200, 200);
        gtk_widget_show(window);
}

int main(int argc, char** argv) {
        GtkApplication* app;
        int status;

        app = gtk_application_new("org.gtk.example", G_APPLICATION_DEFAULT_FLAGS);
        g_signal_connect(app, "activate", G_CALLBACK(activate), NULL);
        status = g_application_run(G_APPLICATION(app), argc, argv);
        g_object_unref(app);

        return status;
}

And another file called makefile:

CC = gcc
CFLAGS = -O2 -Wall
GTK_CFLAGS = `pkg-config --cflags gtk4`
GTK_LIBS = `pkg-config --libs gtk4`

all:
        @mkdir -p ./out
        $(CC) $(GTK_CFLAGS) -o ./out/demo.exe demo.c $(GTK_LIBS)

Remember to save them, and open a cmd in this directory (Shift + Right click).

Run make, the .exe file will be generated under ./out. (Ignore warning message)

/images/GTK_hello_world.png

Summary

That’s all the steps, looks like it’s hard to config the basic environment for C development.

So, life is short, I choose Linux :)

Это не Windows Way. И не macOS Way.

Системные либы в этих ОС это то, что предоставляет сама корпорация, а не какие-то там частные компании или ты.

Методы аля «положите эти библиотеки в system32 и будет вам счастье» уже давно прошли.

Хочешь распространять своё приложение для пользователя удобно? Делай как все: создавай инсталлятор (или portable-архив), который содержит все необходимые библиотеки необходимых версий для запуска твоего приложения. В винде/макоси действует принцип «поставил и работает», а не обновил библиотеку и всё к херам поломалось, потому что приложение было заточено только под определённую версию либы.

Исключением из этого разве что Java является. Да и то, куча приложений под Windows (и кстати Linux тоже) бандлят с собой весь JRE, а то и JDK.

EXL ★★★★★
()



Последнее исправление: EXL
(всего

исправлений: 1)

  • Показать ответ
  • Ссылка

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Смена яркости на windows 10
  • Как установить ios на компьютер с windows
  • Asus x541n как установить windows
  • Система efi windows что это
  • Проверить мак адрес windows 7