C++ 如何在windows下运行通过MSYS安装的pkg config(适用于GTK+;-3.0)并获取绝对路径

C++ 如何在windows下运行通过MSYS安装的pkg config(适用于GTK+;-3.0)并获取绝对路径,c++,eclipse,gtk,msys,pkg-config,C++,Eclipse,Gtk,Msys,Pkg Config,我面临以下问题。我通过MSYS64安装了GTK+-3.0和pkg配置pkg config.exe位于C:\msys64\usr\bin中,我将其添加到windows环境的路径中。如果我跑 pkg-config gtk+-3.0 --cflags 因此,我得到了一系列包含路径,这些路径指向安装在msys上的驱动器(在cmd.exe或msys shell下运行) 现在,我正在尝试为GTK开发设置Eclipse(我希望避免pkg配置包,但是它也会出现同样的问题)。如果我将pkg config的内容添

我面临以下问题。我通过MSYS64安装了GTK+-3.0和pkg配置
pkg config.exe
位于
C:\msys64\usr\bin
中,我将其添加到windows环境的路径中。如果我跑

pkg-config gtk+-3.0 --cflags
因此,我得到了一系列包含路径,这些路径指向安装在msys上的驱动器(在cmd.exe或msys shell下运行)

现在,我正在尝试为GTK开发设置Eclipse(我希望避免pkg配置包,但是它也会出现同样的问题)。如果我将pkg config的内容添加到编译器和链接器选项的命令行模式中,那么(显然)不会包含任何内容

fatal error: gtkmm.h: No such file or directory
如何使
pkg config
指向windows下的绝对路径?(
C:\msys64\..

我正在努力解决这个(可能很无聊)问题,但我找不到解决方案。

gtkmm是GTK+的一个独立项目。正确的
#include

#include <gtkmm.h>
#包括
正确的
pkg config
参数是
gtkmm-3.0

您还安装了MSYS版本的gtkmm和pkg配置。您需要安装MinGW-w64版本来进行任何有意义的开发(否则,所有内容都将绑定到MSYS,这就是为什么您得到的是Unix路径而不是Windows路径)。这很简单:返回到
pacman
行,将
msys
前缀更改为适合目标CPU体系结构的
mingw
前缀。您可以使用
pacman-Ss thing
(在本例中,
pacman-Ss gtkmm
)查看确切名称的列表。然后,运行该体系结构的mingwshell而不是msyshell


()

gtkmm是GTK+的一个独立项目。正确的
#include

#include <gtkmm.h>
#包括
正确的
pkg config
参数是
gtkmm-3.0

您还安装了MSYS版本的gtkmm和pkg配置。您需要安装MinGW-w64版本来进行任何有意义的开发(否则,所有内容都将绑定到MSYS,这就是为什么您得到的是Unix路径而不是Windows路径)。这很简单:返回到
pacman
行,将
msys
前缀更改为适合目标CPU体系结构的
mingw
前缀。您可以使用
pacman-Ss thing
(在本例中,
pacman-Ss gtkmm
)查看确切名称的列表。然后,运行该体系结构的mingwshell而不是msyshell


()

pkg config
应该为您提供绝对路径。gtk是否位于c:/mingw64/include/gtk-3.0下?gtk是否位于c:/msys64/mingw64/include/gtk-3.0下。它给出了相对路径,但是。。。我不明白为什么…
pkg config
会给出绝对路径。gtk是否位于c:/mingw64/include/gtk-3.0下?gtk是否位于c:/msys64/mingw64/include/gtk-3.0下。它给出了相对路径,但是。。。我不明白为什么……我肯定是肤浅的,但是我暗示MinGW已经(并且正确地)安装了(版本x64,具有C++开发的所有要素)。我还安装了一个完整的GTK和GTKmm捆绑包,但我只是错误地将
GTK\GTKmm.h
而不是
GTKmm.h
。问题不是这样。现在我想尝试更改msys的前缀。。我怎样才能达到目标?我不太明白我指的是什么前缀。非常感谢你的建议!我提到的前缀是包名的前缀。如果您确信已正确安装,则只需将工具指向MSYS文件夹中相应的
mingw
文件夹即可。。。(因此,如果您安装到
C:\msys2
,而这是64位,那么它将是
C:\msys2\mingw64
)对不起,我不明白。。。我在
C:\msys64
中安装了MSYS(64位),在
C:\msys64\mingw64
中安装了MingW(64位)。它们工作正常。现在我运行
mingw64.exe
shell。如果我键入
pkg config gtk+-3.0--variable=prefix
我会得到我预期的
/mingw64
。现在,想要获得一个
prefix=C:/msys64/mingw64
,我键入
pkg config gtk+-3.0
——define variable=prefix=“C:/msys64/mingw64”`。。。然而,没有什么变化。当然我是肤浅的,但是我暗示MinGW已经(并且正确地)安装了(版本x64,具有C++开发的所有要素)。我还安装了一个完整的GTK和GTKmm捆绑包,但我只是错误地将
GTK\GTKmm.h
而不是
GTKmm.h
。问题不是这样。现在我想尝试更改msys的前缀。。我怎样才能达到目标?我不太明白我指的是什么前缀。非常感谢你的建议!我提到的前缀是包名的前缀。如果您确信已正确安装,则只需将工具指向MSYS文件夹中相应的
mingw
文件夹即可。。。(因此,如果您安装到
C:\msys2
,而这是64位,那么它将是
C:\msys2\mingw64
)对不起,我不明白。。。我在
C:\msys64
中安装了MSYS(64位),在
C:\msys64\mingw64
中安装了MingW(64位)。它们工作正常。现在我运行
mingw64.exe
shell。如果我键入
pkg config gtk+-3.0--variable=prefix
我会得到我预期的
/mingw64
。现在,想要获得一个
prefix=C:/msys64/mingw64
,我键入
pkg config gtk+-3.0
——define variable=prefix=“C:/msys64/mingw64”`。。。然而,一切都没有改变。