我想在这个gtk4窗口上使用libvte。但在编译过程中面临的问题,演示脚本给出如下。有人能告诉我gtk4是否支持libvt-2.91吗?我在Ubuntu 22.04LTS上
$ gcc -Wall $(pkg-config --cflags gtk4 vte-2.91) gtk4App.c -o term $(pkg-config --libs gtk4 vte-2.91)
ERROR SHOW--------------
In file included from /usr/include/vte-2.91/vte/vte.h:33,
from gtk4App.c:2:
/usr/include/vte-2.91/vte/vtetypebuiltins.h:27:10: fatal error: vtetypebuiltins-gtk4.h: No such file or directory
27 | #include "vtetypebuiltins-gtk4.h"
| ^~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.这是gtk4脚本
#include <gtk/gtk.h>
#include <vte/vte.h>
//sudo apt install libgtk-4-dev libvte-2.91-dev
//gcc -Wall $(pkg-config --cflags gtk4 vte-2.91) gtk4App.c -o term $(pkg-config --libs gtk4 vte-2.91)
static void
activate (GtkApplication *app,
gpointer user_data)
{
GtkWidget *window;
GtkWidget *terminal;
window = gtk_application_window_new (app);
gtk_window_set_title (GTK_WINDOW (window), "Window");
gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);
GtkWidget *grid = gtk_grid_new ();
gtk_window_set_child ((GtkWindow *)window, grid);
gtk_widget_set_vexpand(grid, TRUE);
gtk_widget_set_hexpand(grid, TRUE);
GtkWidget *scrollview1;
scrollview1 = gtk_scrolled_window_new();
gtk_grid_attach(GTK_GRID(grid), scrollview1, 0, 0, 1, 1);
terminal = vte_terminal_new();
gtk_window_set_child ((GtkWindow *)scrollview1, terminal);
gtk_widget_show (window);
}
int
main (int argc,
char **argv)
{
GtkApplication *app;
int status;
app = gtk_application_new ("org.gtk.example", 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;
}我知道libvte可以很好地使用gtk+3.0,但我想在gtk4上使用它。
发布于 2022-04-25 21:51:57
我确实让您的示例代码在我的Ubuntu22.04虚拟机上编译和执行。以下是我为实现这一目标所执行的步骤。
首先,我没有从包管理器中安装"libvte-2.91-dev“库,而是去了"vte”库(https://github.com/GNOME/vte)的Github存储库,并克隆了代码。在运行安装步骤中提到的meson和ninja构建命令之前,我修改了"meson_options.txt“文件,以支持构建对"GTK4”库的“GTK4”支持,将"value“属性从"false”更改为"true“。
option(
'gtk4',
type: 'boolean',
value: true,
description: 'Enable GTK+ 4.0 widget',
)然后,我逐步了解了从Github存储库中注意到的构建方向。
cd vte
meson _build
ninja -C _build
sudo ninja -C _build install我在“忍者-C _build安装”前面添加了"sudo“命令。否则,我相信系统仍然会提示输入密码。
执行了这些步骤之后,不仅已经建立了用于GTK3支持的"vte“库,而且还构建了用于GTK4支持的"vte”库。为了使程序执行可以看到库,我运行了"ldconfig“命令,它更新了库搜索路径。
sudo ldconfig然后,我将示例代码复制到一个文本文件中,将其命名为"gtk4App.c“,然后运行"gcc”编译器,并对参数值进行以下修订。
gcc -Wall $(pkg-config --cflags gtk4 vte-2.91-gtk4) gtk4App.c -o term $(pkg-config --libs gtk4 vte-2.91-gtk4)库“libvte-2.91-gtk 4”集与库“libvt-2.91”相邻。
在编译了示例程序之后,我启动了程序,并得到了一个示例终端。

最后要注意的是,当我运行meson命令时,有一个警告指出,GTK4支持是实验性的。所以请记住这一点。
我希望这能为你澄清一切。
致以问候。
https://stackoverflow.com/questions/71991163
复制相似问题