如何在 Windows 上安装 GTK+ 3.0?

How do you install GTK+ 3.0 on Windows?

正在尝试在 Codeblocks Win7 上设置 GTK+ 3.0。找不到确切的操作方法。

GTK 网站将您定向到 msys2。似乎曾经在 GTK 站点上直接下载一个 all-in-one Windows 包,但现在已经不存在了。

按照说明安装并更新了 msys2,但在已安装的文件或 GTK 引导您访问的 mysys 网站上,我没有看到对 GTK+ 的引用。

就不必要和愚蠢地不清楚做一些本应简单的事情而言,这似乎非常 linuxy。也许我遗漏了一些东西,但它不应该像下载压缩文件夹、解压缩和设置路径那样简单吗?

以这种速度学习 C++ 和使用 Qt 会更快。

问题在标题中,我很惊讶我不得不问这个问题,似乎 google 应该已经完全涵盖了,但我发现的所有内容都与下载无关GTK 网站上不再可用。我找不到有关 msys2 和 GTK+ 3.0 的信息。

提前致谢。

Hallelujah,我找到了为 windows 获取 GTK 的正常非 linux 版本。

有人好心上传了GTK文件到dropbox,下载解压即可。这是给遇到这场 GTK/msys2 灾难的任何其他人的 link。

https://www.dropbox.com/sh/8d1qbh5dsp044on/UgkALzhlqH

这些文件确实应该在 GTK Windows 下载页面上提供,这令人难以置信。

关闭此线程,万岁windows。

Welcome, Google users from the future! Since I wrote this answer, the GTK+ website now has official installation instructions that cover what I said below but with more details and less pain. Refer to that page instead. The answer below has been kept for historical reasons.

GTK+ 网站的问题是没有人维护这些二进制发行版。 Windows 之前的二进制分发版是针对 GTK+ 3.6 的,我相信它是在 2012 年发布的,如果不是更早的话。当前版本是 3.16,距离 3.18 发布还有 。 MSYS2 是唯一受支持的安装机制,并且更新足够频繁。

话虽如此,如果使用MSYS路由,则需要单独安装GTK+; MSYS 不随 GTK+ 开箱即用。从

开始
pacman -Ss gtk3

这应该会为您提供可能要安装的软件包列表,包括用于 32 位和 64 位 MinGW 的 GTK+ 库。我现在忘记他们的确切名字了。

一旦找到你想要的,使用

pacman -S package-name-here

安装它。然后,从开始菜单的MSYS文件夹中打开MinGW 32位或64位Shell开始开发。

如果您想要传统的 IDE 进行 GTK+ 编程,请查找 GNOME Builder 或 Anjuta。对于图形 GUI 设计器,请查找 Glade。

我同意 GNOME 社区在这一点上有点无礼。 他们使 GTK+ 安装几乎与 Linux 安装相同,这有点像在麦当劳给你百事可乐。

最糟糕的是,它迫使你使用他们自己的废话,以至于他们甚至告诉你 IDE 选择什么,你将如何构建你的应用程序,你将拥有什么在你的应用程序中..(没有什么私人的,我实际上总是更喜欢 Linux,我只是不偏不倚)


具体来说,您明确提到了 Codeblocks。 不要使用 code::block 的 GTK+ 项目,它已经过时了。 当然,您可以修改脚本或创建自己的脚本,但它仍在继续 让你慢下来,我们程序员珍惜我们的时间(我认为)

安装(至今)GTK3 ver.的过程windows 7 上的 3.22.16 与 Code::Blocks 一起使用非常简单。 首先下载MSYS2然后在msys2里面输入shell:

pacman -S mingw-w64-x86_64-gtk3

(输入y确认) 那么

pacman -S mingw-w64-x86_64-toolchain base-devel (以确保您拥有 pkg​​-config 的预编译二进制文件并确保您拥有最新版本的 gcc)

那么你首先要在 CodeBlocks 中做一些工作 设置新的编译器,从 Codeblocks 的编译器设置 -> 工具链可执行文件。新的编译器应该位于 C:\msys64\mingw64 (C盘或者你安装MSYS的盘)

然后link在Codeblocks的编译器设置->搜索目录中的一些库: 这些库足以 运行 这个简单的示例代码:

#include <gtk/gtk.h>

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_all(window);
}

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

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

    return status;
}

结果如下:

几天前,我向 gtk 的一位维护者发送了一封电子邮件,寻求 vs 2017 的帮助,这是这封信。在此之后,我选择在 windows

上使用 gtk 2.0

这是我的

我安装了 msys2,我注意到,有很多 head fille 在这个文件夹下 .\msys64\mingw64\include 所以,我想知道我是否 可以直接把msys64下的那些文件包含到vs2017下。让 vs 2017年使用lib下folder.like这个……

这是他写的

首先,我不推荐使用 msys 版本,除非你确定 那 -您不要尝试在您的代码中使用 FILE 结构 由 GLib 等使用。 - 您正在使用的 glibconfig.h 与中的 glibcocnfig.h.win32 匹配 您正在使用的 GLib 版本的源压缩包,因为 针对 GLib 构建的所有内容都会受其影响。

如果您仍然决定走这条路,您需要指定 link 时的图书馆。参见Linker->Input->Additional Dependencies, 您至少需要以下 .lib files,以分号分隔:

gtk-3.0.lib (or gtk-3.lib)

gdk-3.0.lib (or gdk-3.lib)

gdk_pixbuf-2.0.lib

pangocairo-1.0.lib

pango-1.0.lib

atk-1.0.lib

gio-2.0.lib

gobject-2.0.lib

gmodule-2.0.lib

glib-2.0.lib

cairo-gobject.lib

cairo.lib

intl.lib

可能还有 fontconfig.libfreetype.lib,可能是 msys64 构建包括对它们的支持。

您还需要 link 到您可能使用的任何其他库 你的任务。在这些库前加上尾随 ; %(AdditionalDependencies) (don't remove %(AdditionalDependencies))

祝福,干杯!

好吧...我花了几天时间将我的程序移植到 windows,在与 gtk 3.x 斗争之后,我发现您可以使用 gtk 2.x 来避免所有这些麻烦。这些是一些名为 All-in-one bundle 的旧文件 虽然知道这一点很重要,但它存在一些安全问题,(另外你需要将它重写为 gtk 2.0) 但是如果你主要使用 linux ,并且只是想在 windows 上使用 运行 ,我建议你使用旧的 All-in-one bundle for gtk 2.x 例如

https://download.gnome.org/binaries/win32/gtk+/2.24/gtk+-bundle_2.24.10-20120208_win32.zip.mirrorlist

如果您正在寻找除 Msys2 之外还提供 up-to-date、MSVC-compatible GTK3 内容的项目,您应该 check-out gvsbuild and Microsoft's vcpkg。 在引擎盖下,前者使用 python 而后者使用 cmake.