msys2 和 headers 在 'wrong' 的地方

msys2 and headers in the 'wrong' place

好的,所以,我正在尝试使用 msys2 构建第三方库,但 运行 遇到了一些 headers 的问题,例如 gtk.h;我正在尝试构建的库希望通过 #include <gtk/gtk.h>.

找到它

现在,Linux 的经验告诉我,在正常的 linux 环境下,这是正确的;然而,在 gtk 的情况下,它似乎必须是 gtk-3.0/gtk/gtk.h,这对我来说似乎是 msys 中的一个错误——是不是我在设置中错过了某种选择步骤我的msys2环境?就像 Gentoo 下的 'eselect' 系统一样,像 'pselect gtk-3.0' 这样的东西会创建一个链接到 gtk-3.0/gtk 的目录,就叫 gtk?

您只需告诉编译器在哪里可以找到包含目录:

-I/some/path/to/gtk-3.0

假设你已经用pacman安装了mingw-w64-i686-gtk3包并且你运行正在MinGW 32位shell(MSYS2有三种不同的shell 使用不同的工具链),您可以 运行 此命令获取 GTK3 所需的编译标志:

pkg-config gtk+-3.0 --cflags

大多数构建系统都支持调用 pkg-config。它基本上是获取有关依赖项信息的标准方法。

当需要 link 您的程序时,您应该将上面命令中的 --cflags 替换为 --libs