• Windows下搭建GTK3开发环境


    安装MSYS2

    下载地址:http://www.msys2.org/
    安装完成后再开始菜单运行MSYS2 MSYS
    file

    安装MinGW开发环境

    32位:pacman -S mingw-w64-i686-toolchain base-devel libraries development msys2-devel

    64位:pacman -S mingw-w64-x86_64-toolchain base-devel libraries development msys2-devel

    注意:两个可以同时安装,不会相互干扰。

    设置Path(如果为32为则将64改为32)

    修改windows系统的环境变量,可以是当前用户也可以是系统级别,具体如下:

    • 新建环境变量MINGW_HOME

    {安装目录}\msys2\mingw64

    • 新建环境变量C_INCLUDE_PATH

    %MINGW_HOME%\include

    • 新建环境变量LIBRARY_PATH

    %MINGW_HOME%\lib

    • 变量Path中添加如下值

    %MINGW_HOME%\bin

    需要注意的是windows下的环境变量可能需要重启才能生效。

    安装GTK

    32位:pacman -S mingw-w64-i686-gtk3
    64位:pacman -S mingw-w64-x86_64-gtk3

    安装工具套件【可选】

    pacman -S --noconfirm zsh git
    sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
    
    • 1
    • 2

    启动时打开zsh
    vim .bashrc
    在文件最后一行添加,当然也可以直接在命令行中执行

    exec zsh
    
    • 1

    安装cmake

    建议从官网下载安装windows版本的cmake,msys2中的cmake似乎大概也许有些问题,至少我没有正常使用起来。

    编译helloword

    1. 创建gtk-hello目录
      在windows文件管理器里面还是msys2中创建都可以。

    2. 创建helloword.c
      内容为:

    #include <gtk/gtk.h>
    static void print_hello (GtkWidget *widget, gpointer   data)
    {
        g_print ("Hello World\n");
    }
    static void activate(GtkApplication *app, gpointer user_data)
    {
        GtkWidget *window;
        GtkWidget *button;
    
        window = gtk_application_window_new(app);
        gtk_window_set_title(GTK_WINDOW(window), "Window");
        gtk_window_set_default_size(GTK_WINDOW(window), 480, 360);
    	gtk_container_set_border_width(GTK_CONTAINER(window), 28);
    
        button = gtk_button_new_with_label("Hello World");
        g_signal_connect(button, "clicked", G_CALLBACK(print_hello), NULL);
    
        gtk_container_add(GTK_CONTAINER(window), button);
        gtk_widget_show_all(window);
    }
    int main(int argc, char **argv)
    {
        GtkApplication *app;
        int status;
    
        app = gtk_application_new("org.gtk.helloword", 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;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    1. 创建CMakeLists.txt
      内容为:
      cmake_minimum_required(VERSION 3.13)
      project(gtk-hello)
    
      set(CMAKE_C_STANDARD 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(gtk_hello helloword.c) 
      TARGET_LINK_LIBRARIES(gtk_hello ${GTK3_LIBRARIES}) 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    1. 使用cmake-gui生成makefile
    • 设置源码目录和编译目录
    • 点击Configure
      file
      如果前面安装没有问题,这儿应该会成功运行。如果不能运行,大概率是环境变量之类的设置失败或者没有生效。确保环境变量生效的最好办法就是重启一下电脑。
    • 点击Generate生成makefile
    • 进入MSYS2 MinGW x64的控制台:
    cd d:\\work\\gtk-hello\\bld  # 注意是\\而不是\
    mingw32-make -j6  # j6的意思是可以用6个CPU核同时编译。
    ./gtk_hello.exe
    
    • 1
    • 2
    • 3

    此时应该就可以看到gtk写的helloword程序了:
    file

  • 相关阅读:
    当你想家的时候
    高级数据结构——树状数组
    基于Mnesia的分布式缓存
    蓝河操作系统--概述
    axios的简介认识(从头到尾详细)
    两个请求,其中一个请求依赖另一个请求数据
    Elastic stack8.10.4搭建、启用安全认证,启用https,TLS,SSL 安全配置详解
    c# 哈希表(Hash Table)
    代码随想录算法训练营第38天—动态规划06 | ● 完全背包 ● *518. 零钱兑换 II ● 377. 组合总和 Ⅳ
    国产软件迅速崛起,这应该是最适合国内程序员的API管理神器!
  • 原文地址:https://blog.csdn.net/xxNull/article/details/125550763