gpt4 book ai didi

c - 子目录中的头文件(例如 gtk/gtk.h 与 gtk-2.0/gtk/gtk.h)

转载 作者:IT王子 更新时间:2023-10-29 00:49:24 30 4
gpt4 key购买 nike

我正在尝试使用 GTK 构建一个 hello world,其中包括以下行:

#include <gtk/gtk.h>

如你所料。

提供的 Makefile 包含以下行:

GTK_INCLUDE = -I/usr/local/include

所以它期望在/usr/local/include/gtk/gtk.h 中找到 gtk.h。但是在我的系统上,它位于/usr/local/include/gtk-2.0/gtk/gtk.h,即在一个版本化的子目录中。

显然,在这种情况下,我可以将 -I/usr/local/include/gtk-2.0 添加到 Makefile,但同样的问题会出现在 gtk.h 的依赖项等方面。

有什么好的方法可以解决这个问题吗?可以使用 configure 来定位头文件所在的位置并添加适当的包含目录吗?我对配置几乎一无所知,但它似乎在构建时发现了有关系统的信息,这正是我所追求的。

这是一种常见现象,还是我的目录结构异常,这才是真正的问题?

谢谢指点!

最佳答案

您需要使用pkg-config 来获取包含路径:

$ pkg-config --cflags gtk+-2.0
-I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12

您还必须使用它来获取库:

$ pkg-config --libs gtk+-2.0
-lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lgio-2.0 -lcairo -lpango-1.0 -lfreetype -lz -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lglib-2.0

(这些命令的输出将根据您的发行版而有所不同,并且始终是您发行版的正确输出。)

关于c - 子目录中的头文件(例如 gtk/gtk.h 与 gtk-2.0/gtk/gtk.h),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1041059/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com