windows+GTK4_3+Clion+msys2

@


🔜底部锚点 ▼⬇️

前言

  • 在犹豫用什么框架写GUI时,考虑纵多,我决定用GTK4来在windows上开发GUI程序,
    原因是小巧,界面还可以. (受不了win32图形界面原生api的臃肿繁琐?)
  • 相关教程很少 于是我在这里整理一些要点细节记录一下

提示:以下是本篇文章正文内容,下面案例可供参考

Requirements

一、安装相关工具

  • # gcc
      pacman -S mingw-w64-ucrt-x86_64-gcc
      # gtk  4
      pacman -S mingw-w64-x86_64-gtk4
      # gtk  3
      pacman -S mingw-w64-x86_64-gtk3
      # 工具链
      pacman -S mingw-w64-x86_64-toolchain base-devel
  • gtk4或许依赖一些gtk3的库文件所以我都安装后再 pacman -R mingw-w64-x86_64-gtk3只安装gtk4时 CMakeLists.txt build 时报一些错误

二、配置环境变量

  • msys的路径主要是把msys下面的mingw64目录暴露出来,然后

  • 在这里插入图片描述

  • 注意顺序: 上面bin lib include 一定放在下面两个上面 不然后面用pkg-config --modversion gtk4 验证的时候:Package gtk4 was not found in the pkg-config search path.

  • 下面两个环境变量的配置是必要的吗? 待定...在这里插入图片描述

三、验证工具/模块

  • # PowerShell下输入
      
      gcc --version 
      #gtk4 模块版本
      pkg-config --modversion gtk4
      #gtk3 
      pkg-config --modversion gtk+-3.0
      #gtk3/4 库文件 4改3
      pkg-config --cflags --libs gtk4 
      
      #demo
      gtk4-demo
      gtk3-demo

四、Clion Build工具集的配置

  • Ctrl+Alt+S show up the settings Window在这里插入图片描述

五、CMakeLists.txt文件的配置

  • gtk4 (ProjectName字段改成你的项目名)

    cmake_minimum_required(VERSION 3.2)
    project(SimpleCalculatorPro)
    
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
    
    find_package(PkgConfig REQUIRED)
    
    pkg_check_modules(GTK4 REQUIRED gtk4)
    
    include_directories(${GTK4_INCLUDE_DIRS})
    link_directories(${GTK4_LIBRARY_DIRS})
    
    add_definitions(${GTK4_CFLAGS_OTHER})
    
    add_executable(ProjectName main.cpp)
    target_link_libraries(ProjectName ${GTK4_LIBRARIES})
  • gtk3 (ProjectName字段改成你的项目名)

    cmake_minimum_required(VERSION 3.2)
      project(SimpleCalculatorPro)
    
      set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
    
      find_package(PkgConfig REQUIRED)
    
      pkg_check_modules(GTK3 REQUIRED gtk+-3.0)
    
      include_directories(${GTK3_INCLUDE_DIRS})
      link_directories(${GTK3_LIBRARY_DIRS})
    
      add_definitions(${GTK3_CFLAGS_OTHER})
    
      add_executable(ProjectName main.cpp)
      target_link_libraries(ProjectName ${GTK3_LIBRARIES})

六、简单窗口例子

  • #include <gtk/gtk.h>
    static
    void log_print()
    {
    
     g_print("this is a message\n");
    
    }
    static
    void activate (
     GtkApplication* app,
     gpointer  data
    )
    {
     GtkWidget* window;
     GtkWidget* button;
     window = gtk_application_window_new(app);
     button = gtk_button_new_with_label("hello world!");
     g_signal_connect(button, "clicked", G_CALLBACK(log_print), nullptr);
    
     gtk_window_set_default_size(GTK_WINDOW(window), 100, 300);
     gtk_window_set_title(GTK_WINDOW(window), "test");
     gtk_window_set_child(GTK_WINDOW(window), button);
     gtk_window_present(GTK_WINDOW(window));
    }
    int main(int argc,
          char** argv)
    {
     GtkApplication* app;
     int status;
     app = gtk_application_new("myapp.test.com", G_APPLICATION_DEFAULT_FLAGS);
     g_signal_connect(app, "activate", G_CALLBACK(activate), nullptr);
    
     status = g_application_run(G_APPLICATION(app), argc, argv);
     g_object_unref(app);
    
    }
    • 这是一个GTK4窗口在这里插入图片描述

七、Glade:GTK的GUI设计器

在这里插入图片描述

To be continue...


------------------------------------- ½§¦ ‹ ‹‹‹…‹ 这是分割线中的分隔区 ›…››› ›¦§½ ----------------------------------------


后记

我保留了GTK3模块,以防GTK4错误

  • 15
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值