GTK 3.x是一个真正的跨平台解决方案吗?

7
我尝试过Qt 4.x/5.x和GTKmm 3.x,而且我非常喜欢GTKmm胜过Qt。现在我刚刚发现,GTKmm 3.x没有Windows版本或Mac版本,基本上我只能在Linux中找到库、源代码和二进制文件。显然,Windows支持(对于Mac操作系统的情况我不确定)在2.x时代被取消了,并且今天仍然不存在。我已经计划使用GTK 3.x,特别是由3.x分支引入的一些新功能,所以使用GTK 2.x是不可选项。现在我想问:有没有关于GTK 3.x的Windows和Mac支持的新情况?有吗?甚至是实验性项目?

1
相关链接:https://dev59.com/_m025IYBdhLWcg3wblc3。 - Frédéric Hamidi
@FrédéricHamidi 谢谢,我已经看过了,但那个问题已经超过一年半了...这让我完全没有信心 :( - user1824407
4个回答

7
不,至少在未来需要安全方面考虑时不是。MacOSX和GTK的端口不够完美且完全是自愿的,这意味着对于这种复杂性和大小的程序,它们没有被积极开发。而且,在添加新功能之前,没有人关心旧功能是否已经实现。距离GTK3发布已经将近两年了,但仍没有官方的Windows二进制分发。在GNOME的其中一次会议上,有一个公开讨论,讨论是否应该将GTK4限制为Linux系统。我猜他们的意思是Linux/BSD-但目前Wayland只是纯Linux,而BSD缺乏桌面级别的开发人员,这足以吓跑任何需要真正投资的人。此外,我坚信跨平台GUI工具包已经过时了。抽象出您的应用程序的GUI并为每个平台开发。随着AppStores的成功,你将被迫越来越多地使用本地平台风格。如果您的应用程序看起来与众不同,它已经被苹果AppStore拒绝。Windows现在正在强制使用WinRT。准备好在未来这将变得更加重要。因此,使用使用本地窗口小部件集的WxWidgets是正确的选择。跳过GTK。

1
谢谢,你知道哪里可以阅读QT和WxWidgets之间的真实比较吗?我对“Qt extra”(如数据容器和额外库)不感兴趣,我只想要一个GUI。另外,“使用本地窗口小部件集”的意思是什么?其他框架不会与底层GUI进行接口吗? - user1824407
我认为唯一真正实际可行的比较,是比较样例和API参考文档,并找出是否满足您的需求和开发风格。我没有使用WxWidgets,而是在其上添加了我自己的10KLines层,因为我想使用XCodes界面构建器(我见过的最好的GUI构建器)。 - Lothar
使用本地小部件意味着它们使用完整的小部件,而不仅仅是外观(通过使用主题API进行实现,例如“DrawButton”调用)。感觉通常同样重要,你可以看到QT与本地Windows感觉完全不同,当你查看细节时,外观也值得怀疑。如果所有这些都很重要,取决于您的应用程序及其目标受众。 - Lothar

7

2018-12-18 更新:

多年来,通过MSYS2支持在Windows上安装GTK+ 3

旧答案:

目前,Windows上的GTK提供的是“原样”。基本上,这意味着没有使用Windows的GTK维护者,而那些使用Linux的人有足够的工作来维护Linux版本。这意味着任何为Windows上的GTK 3做出的贡献都是受欢迎的,一些人正在使用它,但这并不适合大众使用,因为没有人愿意投入时间去完成这项工作,这不可能一夜之间完成。因此,它是可用的,但不要期望反应灵敏的维护。

至于构建方面,有一位法国人提供了一个(非官方的)Windows版GTK 3安装程序。


显然,在其他平台上根本没有用户,Windows端口不是按原样提供的,甚至在3.x分支中都不存在,GTK很棒,但如果只能在Linux上使用,那就毫无意义。 - user1824407
1
没有安装程序并不意味着它不存在。人们仍然可以从源代码构建适用于Windows的GTK,或者使用那些非官方的二进制文件,这就是一些人(我猜只有少数人)所做的。没有专门负责修复该平台特定错误的维护人员,使其无法成为一个“完全支持”的平台。他们还没有准备好提供安装程序,因为这将意味着更多的错误报告,而没有人来修复它们。他们不能告诉开发人员在Windows上GTK 3“基本可用”。因此,虽然不容易,但在Windows上使用GTK 3应该是可能的。 - liberforce
1
这是一个关于win32特定提交的列表示例。虽然不算太多,但仍有一些活动:http://git.gnome.org/browse/gtk+/log/?qt=grep&q=win32 - liberforce
在Windows上使用GTK/mm3远不止于“可能” ;)如今,MSYS2/MinGW64的软件包管理器可以为您完成所有工作,并启用在GTK等与MSVCRT之间进行本机编译/链接。我没有看到这个线程中所提出的问题;源是源,只要有好的工具链,就可以在任何地方进行编译和运行。我只会担心如果GTK等停止开发,而不是是否有官方的安装程序...事实上,我几乎很高兴没有一个(我的意思是图形化的),因为通过MSYS2和其打包系统,它的工作方式就像在Linux中一样。 - underscore_d

3

我已经找到了很多关于下载资源的信息,但我对是否有真正的项目感兴趣;如果我要编写GTK代码,我的问题在于长期支持,而不是如何构建库或从哪里下载它。 - user1824407
好的,就像我说的一样,GTKMM开发人员似乎没有在这方面有任何实质性的进展。 - Christian Smith

1

在 Mac 上,GTK 已经运行良好很长一段时间,并且持续工作到 3.x 系列:

https://live.gnome.org/GTK%2B/OSX/Building

您也可以使用MacPorts安装GTK 3.x,但我不知道它的兼容性如何。


GTK和GTKmm 3现在可以通过Homebrew获取,而且对于我的程序来说似乎完美地运行了。 - underscore_d
这对于本地开发非常有效,但尚不能用于将您的应用程序作为Mac应用程序捆绑分发。 - ptomato
公平地说,我还没有尝试过那个。但是你的意思是 gtk-mac-bundler https://wiki.gnome.org/Projects/GTK%2B/OSX/Bundling 不能与 Homebrew 方法一起使用吗?它们在某种程度上依赖于官方的 OS X 端口吗? - underscore_d
对于 gtk-mac-bundler,您需要将所有程序库放在它们自己的目录树中,以便打包程序知道要复制什么。理论上来说,它可以使用 Homebrew 的共享目录树,但据我所知,还没有人尝试过让它正常工作。 - ptomato

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接