设为首页收藏本站
查看: 4167|回复: 1

[高级语言] [gtkmm] 01 gtkmm环境配置(Vs2019+vcpkg lastest)

[复制链接]
  • TA的每日心情
    难过
    2022-9-23 12:52
  • 签到天数: 201 天

    [LV.7]常住居民III

    发表于 2021-11-13 11:19:37 | 显示全部楼层 |阅读模式
    既然是gtkmm,这个系列就是介绍c++使用gtk的。
    为什么要使用gtk:一个优秀的跨平台gui解决方案

    而gtkmm 是一个 GTK 的 C++ 封装,GTK+ 是一个用于创建图形用户界面的软件库。它使用 LGPL 协议,因此您可以使用 gtkmm 开发开放软件、自由软件,甚至商业非免费软件而不需支付任何版权费用。

    gtkmm 曾经被称为 gtk--,那是因为 GTK+ 的名字中已经有了一个加号。但是,由于 -- 不容易被搜索引擎索引,所以项目名字就渐渐的变成了gtkmm,后来我们就一直使用这个名字。




    为什么使用gtkmm而不是使用gtk:gtkmm 允许你使用常用的 C++ 技术来撰写代码,比如封装、继承和多态。作为一个 C++ 程序员,你可能已经意识到这会让代码更加清晰、更加良好的管理代码。

    gtkmm 更加类型安全,因此编译器可以检测出一些 C 只能在运行时才能检测出来的错误。这种使用特定类型的方法同样使得 API 更加清晰,因为你只需要通过看一下函数声明就可以知道应该使用什么类型了。

    可以使用继承来衍生新的部件。在 GTK 中使用 C 代码来衍生新部件是非常复杂的,并且很容易出错,因此几乎没有 C 的程序员这么做。作为 C++ 开发人员,你知道继承是一个基本的面向对象技术。

    可以使用成员实例,简化了内存管理。所有的 GTK 的 C 部件都是使用指针进行操作的。作为 C++ 程序员,你知道指针应当尽量避免使用。




    gtkmm 比 GTK 的代码更加简短,GTK 使用了大量带前缀的函数名以及大量的转型宏。
    但是由于他的配置比较复杂,暂时先不介绍它的使用方法,转而来先讲它的配置。
    这个教程里使用的是 windows x86 + Vs2019 +vcpkg
    由于vcpkg端口映射的问题,导致gtk的使用需要配置繁多的附加目录。(已提交GitHub issues,期待修复 https://github.com/microsoft/vcpkg/issues/18760)

    也就是说,首先你需要vcpkg install gtkmm
    然后在你的vs2019项目中配置头文件目录。我下面给出这个目录
    D:\vcpkg\installed\x86-windows\include\gtkmm-4.0;D:\vcpkg\installed\x86-windows\include\glibmm-2.68;D:\vcpkg\installed\x86-windows\lib\glibmm-2.68\include;D:\vcpkg\installed\x86-windows\include\glib-2.0;D:\vcpkg\installed\x86-windows\lib\glib-2.0\include;D:\vcpkg\installed\x86-windows\include\sigc++-3.0;D:\vcpkg\installed\x86-windows\lib\sigc++-3.0\include;D:\vcpkg\installed\x86-windows\include\giomm-2.68;D:\vcpkg\installed\x86-windows\lib\giomm-2.68\include;D:\vcpkg\installed\x86-windows\lib\gtkmm-4.0\include;D:\vcpkg\installed\x86-windows\include\pangomm-2.48;D:\vcpkg\installed\x86-windows\lib\pangomm-2.48\include;D:\vcpkg\installed\x86-windows\include\cairomm-1.16;D:\vcpkg\installed\x86-windows\lib\cairomm-1.16\include;D:\vcpkg\installed\x86-windows\include\cairo;D:\vcpkg\installed\x86-windows\include\gtk-4.0;D:\vcpkg\installed\x86-windows\include\pango-1.0;D:\vcpkg\installed\x86-windows\include\harfbuzz;D:\vcpkg\installed\x86-windows\include\gdk-pixbuf-2.0;D:\vcpkg\installed\x86-windows\include\graphene-1.0;D:\vcpkg\installed\x86-windows\lib\graphene-1.0\include;%(AdditionalIncludeDirectories)

    请将D:\vcpkg替换成你的vcpkg安装目录,我用的是x86架构的gtkmm,如果你安装的是x64架构,请更改\x86-windows目录名称。
    配置完成如图 :


    以及将c++标准替换成c++17否则将报错(gtkmm的依赖库中使用了c++17的新式语法)



    将官网上的例子复制一下
    1. #include <gtkmm.h>

    2. class MyWindow : public Gtk::Window
    3. {
    4. public:
    5.   MyWindow();
    6. };

    7. MyWindow::MyWindow()
    8. {
    9.   set_title("Basic application");
    10.   set_default_size(200, 200);
    11. }

    12. int main(int argc, char* argv[])
    13. {
    14.   auto app = Gtk::Application::create("org.gtkmm.examples.base");

    15.   return app->make_window_and_run<MyWindow>(argc, argv);
    16. }
    复制代码


    这是一个最简单的例子,下一个帖子我会讲解它每个语句的作用,并说明相关控件使用方法。

    运行他,由于我使用的是非utf-8编码的vs2019,所以warning很多,忽略它,





    运行结果如图。
    下个帖子将介绍gtkmm的基础用法

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?注册

    x

    评分

    1

    查看全部评分

  • TA的每日心情
    难过
    2022-9-23 12:52
  • 签到天数: 201 天

    [LV.7]常住居民III

     楼主| 发表于 2021-11-13 11:22:39 | 显示全部楼层
    刚刚测试了一下,编译出的exe在服务器系统上同样可以正常运行。
    以及关于linux安装的说明:使用 apt-get install lib语法安装gtkmm,大部分linux自带gtkmm软件包
    代码在linux-mac-windows均适用
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    红盟社区--红客联盟 

    Processed in 0.062566 second(s), 25 queries.

    站点统计| 举报| Archiver| 手机版| 黑屋 |   

    备案号:冀ICP备20006029号-1 Powered by HUC © 2001-2021 Comsenz Inc.

    手机扫我进入移动触屏客户端

    关注我们可获取更多热点资讯

    Honor accompaniments. theme macfee

    快速回复 返回顶部 返回列表