是否可以编译 Gtk+ 应用程序以同时在 Gtk 2 和 3 上运行
Can a Gtk+ application be compiled to run on both Gtk 2 and 3
我想构建一个同时在 Gtk 2 和 Gtk 3 环境中运行的应用程序。我有哪些选择?
- 有两个独立的项目?
- 有两个单独的构建步骤?
- 是否可以构建单个可执行文件,以便它能够在两个环境中运行?
我正在Linux机器上使用带有cmake
的C++。
- 有两个单独的项目?
当然,这是一种选择。
- 有两个单独的构建步骤?
这也是,但关键目标是生成两个不同的二进制文件(不一定都是独立的可执行文件,见下文(。
- 是否可以构建单个可执行文件,以便它能够在两个环境中运行?
是的,但这样做并不简单。 您构建的每个二进制文件都将链接到特定的库。 否则不可能,因为 v2 和 v3 库之间存在多种名称冲突。
但是,如果您愿意抽象您的 Gtk 用法,以便提供可插拔的后端,那么您可以同时提供 Gtk+2 和 Gtk+3 后端。 还有其他人。 但这并非易事,特别是如果您已经使用直接 Gtk 调用编写了应用程序。
FWIW,我认为这是错误的道路。除非你的目标是只提供GTK+2的非常旧的系统,否则GTK+3是你要走的路。GTK+3 于 2011 年发布(我写这篇文章时是 9 年前(,从那时起 GTK+2 就处于维护模式。一旦 GTK+4 发布(如果一切顺利,将在 2020 年的某个时候发布(,那么 GTK+2 将不再被维护。
所以正确的问题应该是"GTK+3和/或GTK+4?"。
使用GtkBuilder为您完成大部分界面构建工作并分解。对于服装部分,您可以在编译时测试内容:
#if GTK_VERSION(3, 22, 0)
// code neeeding GTK+ >= 3.22.0
#endif
或者只是使用单独的代码分支,以便您可以制作特定于 GUI 的内容,同时仍然能够合并非 UI 相关的代码。
相关文章:
- 运行同一解决方案的另一个项目的项目
- CMake-按正确顺序将项目与C运行时对象文件链接
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- 代码在main()中运行,但在函数中出现错误
- 我在c++代码中生成了一个运行时#3异常
- 如何在linux终端中同时编译和运行c++代码
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 如何在运行中期切换GTK CSS style_context
- 如何在MS Visual Studio 2019中运行QT UI
- 如何通过cpp程序运行shell脚本
- IPC使用多个管道和分支进程来运行Python程序
- 删除指向指针的指针是运行时错误吗
- 如何用参数值调用函数(仅在运行时已知)
- 如何在GTK程序运行时禁用屏幕保护程序/电源管理/屏幕消隐
- 是否可以编译 Gtk+ 应用程序以同时在 Gtk 2 和 3 上运行
- GTK::main::运行段错误
- 如何在运行时从 Glade 定义添加 Gtk::笔记本选项卡
- 在 Windows 7 上编译和运行 GTK+ 应用程序
- GTKmm3(GTK+3 C++)编译,但运行时抛出GLib GIO CRITICAL错误
- GTK+接口应该在单独的线程中运行吗?