操作系统:Linux Mint 21.1 x86_64
正如 GTK 官方网站 (https://www.gtk.org/docs/installations/linux/) 中所述,我下载了我的发行版的开发包:
sudo apt-get install libgtk-4-dev
安装成功完成并将内容安装到以下文件夹中:
/usr/include/gtk-4.0
文件夹结构如下:
gtk-4.0
------->gdk
------->gsk
------->gtk
------->unix-print
因此,当我想包含
gtk.h
时,我需要写 #include <gtk-4.0/gtk/gtk.h>
但是这样的 include 语句被证明是有问题的,当我的 LSP 引发诸如
In included file: 'gtk/css/gtkcss.h' file not found
旁边的
#include <gtk-4.0/gtk/gtk.h>
之类的错误时,我第一次注意到这一点
存在被拒绝的文件是存在的,但是因为在源文件
gtk.h
中,它已尝试使用开头没有#include <gtk/css/gtkcss.h>
的gtk-4.0/
语句进行访问,因此它已过时。这个问题在代码库中随处可见。
天真地,我认为将
gtk-4.0
的内容移动到usr/include
(我需要root访问权限,我认为这表明这不是最佳解决方案)可以解决问题。它在某种程度上做到了,但随后它抱怨找不到 glib.h
,它又位于名为 glib-2.0
的父文件夹中,但这并没有阻止我采用非理性的解决方案,然后我也继续将该文件夹的内容移动到usr/include
。正当我以为我已经解决了它时,它开始抱怨其他事情,此时我感到害怕并通过时移恢复了我的包含文件可能造成的损坏。
我在网上搜索答案,但找不到任何帮助。 如果有人碰巧知道解决方案,我将不胜感激。
编辑:
pkg-config --cflags --libs gtk4
将其添加到我的gcc
参数后,我可以编译我的项目。我还将 pkg-config --cflags gtk4
的输出添加到我的包含目录中,现在我的 LSP 会自动完成,但在我看来这不是一个好的解决方案,我应该能够通过 gtk/gtk.h
省略 gkt-4.0/
来访问它
在使用 GTK4 和 clangd 时,我在 LunarVim 上的 aucomplete 遇到同样的问题。尝试消除这些与包含文件相关的错误是很困难的。我读到您取得了一些成就,但没有得到您专门为解决问题所做的事情,并且由于我无法发表评论并且我迫切需要解决方案,所以我希望您在这里帮助我。