【问题标题】:How do you install GTK+ 3.0 on Windows?如何在 Windows 上安装 GTK+ 3.0?
【发布时间】:2015-12-16 04:55:04
【问题描述】:

尝试在 Codeblocks Win7 上设置 GTK+ 3.0。很难找到确切的方法。

GTK 网站将您定向到 msys2。似乎曾经在 GTK 网站上直接下载了一个不再存在的一体化 Windows 捆绑包。

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

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

按照这个速度,学习 C++ 和使用 Qt 会更快。

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

提前致谢。

【问题讨论】:

  • 对于GUI,我是一个初级程序员,现阶段只知道一些C。
  • 我会,但我很享受现在还活着,并且不得不处理 Linux 带来的永无止境的头痛,这将使其处于危险之中。尊重使用 Linux 的人,但在少数情况下我给了它机会,在我什至可以尝试使用计算机做我想做的事情之前,它只是一个接一个的问题。我喜欢 Linux 开源哲学,但我没有知识或心/渴望获得知识来复制我的 Windows 设置。 Windows 可以正常工作,我使用的是 XP/7,现在有了新的 Windows 操作系统,我怀疑我永远不会离开它们。
  • "GTK+ 适用于:Windows" - 为什么我需要学习 Linux?如果您可以将我链接到“GTK+ 网站上的指南,告诉您如何使用 msys2 在 Windows 上安装软件包”,我将永远感激不尽,因为我看不到它。
  • 这就是我的想法,一个页面告诉你你需要什么,而不是如何得到它。它完全没有告诉您有关通过 msys2 获取所需软件包的信息,它只是指出它们以及它的结束。 “在 Windows 中以二进制形式获取 GTK+ 及其依赖项的首选方法是使用 MSYS2 项目。您可以在本文中找到更多信息。”通过整篇文章安装 msys2,没有提到我在 OP 中所说的 GTK。
  • 这里唯一的巨魔是redFIVE。无视他。

标签: c windows gtk codeblocks gtk3


【解决方案1】:

欢迎来自未来的 Google 用户!自从我写了这个答案后,GTK+ 网站现在has official installation instructions 涵盖了我在下面所说的内容,但包含更多细节和更少的痛苦。请参阅该页面。由于历史原因,下面的答案一直保留。

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 以开始开发。

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

【讨论】:

  • 太好了,我知道这对于了解 linux 的人来说会很简单。实际上,我设法在win32builder.gnome.org/gtk+-bundle_3.6.4-20130921_win32.zip 找到了 Windows 3.6.4 下载,并且到目前为止它似乎可以正常工作,而无需通过您展示的 msys2 方式。顺便说一句,Windows 用户应该如何知道这样做,Windows GTK 页面当然应该使用更清晰的说明进行更新?如果我有任何问题,我会尝试使用您提供的方法重新安装,但希望我不必这样做。感谢您的建议,我正计划检查 Glade。
  • 不要使用捆绑软件,它们都已经过时了。使用 MSYS2,因为 GTK+ 开发人员说这就是 Windows 所支持的。自从写了答案以来,我重写了安装说明。您现在应该可以按照官方说明使用 MSYS2 轻松安装 GTK+:gtk.org/download/windows.php
  • @liberforce 太棒了!我已经用这些新信息更新了答案。
  • 那么,如何在不安装另一个下载器和 IDE 的情况下使用 GTK+ 工具包并在我的磁盘上占用 450MB 空间?另外,我的磁盘上已经有 minGW,我真的需要另一个副本吗?我想使用 Code::Blocks、eclipse 或 Net beans,所有这些我已经在我的计算机上。我理解下载器背后的理念,它提供了最新最好的,但在实践中这只是一个坏主意。我的电脑被下载程序、编译器、IDE 污染了,这让我头晕目眩。我只想生产一些能让我赚钱的东西,而不是花一天时间学习新东西
  • 我按照说明进行操作,但是当我尝试使用 CMake 构建我的项目时,我收到以下错误:“未找到包 'gtk+-3.0'”。可能是什么问题,我该如何解决?
【解决方案2】:

哈利路亚,我找到了为 Windows 获取 GTK 的理智的非 linux 版本。

有人好心将 GTK 文件上传到保管箱,只需下载并解压即可。这是遇到此 GTK/msys2 灾难的其他人的链接。

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

这些文件真的应该可以在 GTK Windows 下载页面上找到,难以置信。

关闭这个帖子,viva windows。

【讨论】:

  • 实际上,这正是 GTK 人不想提供的,因此使用 GTK 开发并希望分发其应用程序的人知道他们需要什么。
  • 请原谅我的无知,但为什么这篇文章被否决了?现在存在适用于 Windows 的 GTK 二进制文件不是一件好事吗?
  • 嗯,不知道为什么它也被否决了,但我真的希望它来自比保管箱链接更权威的来源......
  • @FabioZadrozny 对不起,我迟到了。我相信这是原始帖子。 stackoverflow.com/a/22522417/2403756
  • 它被否决了,因为从网络上不受信任的随机位置获取内容是愚蠢的。这就是 GTK+ 团队指向 MSYS2 项目的原因。如果 GTK+ 信任 MSYS2,而您信任 GTK+,那么您应该信任 MSYS2。
【解决方案3】:

我同意 GNOME 社区在这一点上有点傲慢。 他们让 GTK+ 的安装几乎和 Linux 的安装一样,有点像在麦当劳给你百事可乐。

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


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

安装(至今)GTK3 版本的过程。 3.22.16 在 Windows 7 上与 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的盘)

然后在 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;
}

并得到这样的结果:

【讨论】:

  • 感谢您的回答,但我终于设法不破坏 Linux 并且已经专门使用它一段时间了。万岁 Linux、万岁 Python
  • @NOPdaCALL 你做得很好。考虑到这更像是一个额外移植到 Windows 的 linux 项目。
  • 我也怀疑你已经设法正确处理它。尽管如此,仍然有人想知道如何轻松地将其安装在 Windows 上。最新版本非常不同,更紧凑,结构更好,改进也相当大。
  • 你说:I agree GNOME community is being a bit insolent to this point. They made GTK+ installation almost the same as the Linux installation, which is a bit like giving you pepsi in mcdonalds.。 GTK+ 是一个开源项目,欢迎大家贡献。但是,如果 Windows 开发人员不这样做,那么就没有人来做这项工作,而 GNOME 开发人员会为他们有限的资源做一些更容易的事情。将构建系统切换到 Meson 构建系统有望使 GTK+ 4 更容易在 Windows 上集成。
【解决方案4】:

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

这是我的

我安装了msys2,我注意到,有很多头部填充物 在这个文件夹下.\msys64\mingw64\include 所以,我想知道我是否 可以直接将msys64下的那些文件包含到vs2017。让vs 2017要使用文件夹下的lib。像这样......

这是他写的

首先,我不建议使用 msys 构建,除非您确定 那 -您不要尝试在代码中使用 FILE 结构 GLib等使用 -您使用的glibconfig.hglibcocnfig.h.win32 匹配 您正在使用的 GLib 版本的源 tarball,因为 所有针对 GLib 构建的东西都会受到它的影响。

如果您仍然决定走这条路,您需要指定 链接时的库。见Linker-&gt;Input-&gt;Additional Dependencies, 您至少需要以下.lib files,用分号分隔:

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

gdk-3.0.lib(或 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 构建包括对它们的支持。

您还需要链接到您可能使用的任何其他库 你的任务。在这些库之前添加一个尾随 ; %(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 用于 gtk 2.x 例如

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

【讨论】:

  • 谢谢,但我不得不说这是很常见的任务。如果您不知道如何将一堆 lib 文件添加到您的项目并且知道您不应该跨 API 边界传递 FILE 和其他结构(DLL 文件 - 现在不再需要通用 c 运行时),那么您必须学习再次在 Windows 上进行 C 编程的基础知识。
  • @Lothar 抱歉,我从来没有学过任何关于 Windows 编程的知识。我认为这个 msys2 构建适合直接使用,并且解决了所有 API 问题。
  • @Lothar 顺便说一句,GTK 2.0 提供了对 Windows 的支持,据我所知,可以跨 API 边界传递 FILE 和其他结构。很抱歉打扰你,因为我对在 Windows 上编程一无所知,我知道这对你们来说是愚蠢的。
【解决方案5】:

如果您正在寻找除 Msys2 之外还提供最新的、与 MSVC 兼容的 GTK3 内容的项目,您应该查看 gvsbuild 和 Microsoft 的 vcpkg。 在底层,前者使用python,后者使用cmake。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-19
    • 2021-06-25
    • 2018-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多