零 架构
https://www.gtk.org/docs/architecture/
https://docs.gtk.org/gtk4/building.html
!!!!!!!!!!!!!!!!!!!书上有讲最小的依赖项
GTK本身 ./configure make 但这是旧版的吧,需要用meson
GLIB
从源码安装
如何解决依赖关系呢
根据依赖关系的要求,库的安装要按照这样的先后顺序进行:GLib、Atk、Cairo、Pango、Gtk+。
或者,安装的时候,缺少的东西,似乎自动下载源代码进行编译了
用package安装(不能安装指定版本,未必有)
自动
使用的是已经编译好的软件包。由于这种安装一般会自动解决各个软件包之间的依赖关系,进而安装或者更新相应的软件包,所以与源码安装 方式相比,二进制包的安装节省了编译代码所需要的时间,避免了源码安装的种种繁琐易错之处,对于安装者的要求也较低
examples!!!!!!!!!!!!!!!
1搭建环境
2基于examples学习
国际化、?、Xlib(跟x协议有关)的封装、数据结构
2d图形库、图形库、构建相关
所以应用程序,只需要包含gtk.h?
安装概述
1预构建的二进制包,operating system vendor 、 independent sources
2系统自带
3 自己构建,尤其是需要指定版本时,有办法直接安装历史版本的预构建包么?
链接没有,git的release呢
meson ninja 参考readme进行构建
源码来源,a source distribution 、 a Git clone
mesao选项:
meson setup --prefix /opt/gtk builddir 模块的安装路径
meson configure,出现啥?跟Linux内核配置一样?有file解释有哪些选项
调试应用,跟编译应用时的选项有关;build types决定,能否调试底层库?
用默认配置就好
安装用的环境变量
运行应用用的环境变量:bin和库在哪里
从源码构建的顺序要求:
gtk需要啥:看我的.pc
依赖需要先编译啥:先看我的.pc
当没有时,似乎是从git上下载源码编译的
所以编译方式会有不同么,有些是gtk团队贡献的,gnome/gtk,一个庞大的开源社区
GLIB:
GLib是一个低级核心库,构成了GTK的基础。它为C语言提供数据结构处理、可移植性包装器和运行时功能接口,如事件循环、线程、动态加载和对象系统。
PANGO:
Pango是一个用于文本布局和呈现的库,强调国际化。它构成了GTK文本和字体处理的核心。
CAIRO:
Cairo是一个2D图形库,支持多种输出设备(包括X Window System、Win32),同时在所有媒体上产生一致的输出,同时在可用时利用显示硬件加速。
GDKPIXBUF
GdkPixbuf是一个用于加载各种格式图标等图形资产的库,如PNG、JPEG和GIF。
ATK
ATK是一组提供可访问性的接口的库。通过支持ATK接口,应用程序或工具包可以与屏幕阅读器、放大镜和替代输入设备等工具一起使用。
GObject Introspection
一个框架,用于将Introspection数据提供给语言绑定。
libpoxy
是一个抽象不同OpenGL库之间差异的库。GTK将其用于跨平台GL支持和自己的绘图。
一 安装gtk
1 非gtk维护的直接sudo
2 gtk维护的按顺序构建
meson 的配置,只用默认的不行么
缺少的依赖
自动下载源码了?
提前构建好?看一下配置文件需要哪些依赖
可以通过配置项目,减少依赖么
glib编译
glib本身有哪些依赖呢
The Absolute Beginner's Guide to Installing and Using Meson
INATALL.md,有依赖描述,也有编译选项描述
https://dickens.co.in/compile-gtk4-on-ubuntu-bionic-lts-focal-lts
这个在构建之前,已经安装了好多lib,这个应该也可以解决依赖关系
有的可以直接sudo下载,但是有的只能从github下载release吧,因为这种lib没有添加到源里?
meson compile -C _build 生成库?下面的是配置参数
生成失败:
xml-stripblanks preprocessing requested, but XMLLINT is not set, and xmllint is not in PATH
meson configure _build | grep -i xml ,没有啊
meson install -C _build 把库copy到哪里?把需要的文件拷贝到在配置时指定的安装目录中
哦哦哦,生成成功了,只是说跳过了预处理而已。