安装 gtkmm / gtk+ 失败

Failing to install gtkmm / gtk+

所以我是这个平台的新手,我使用 c/c++ 并且我对图形界面感兴趣,所以我决定将 gtk+ 和 gtkmm 与 visual studio 一起使用。 首先,我为 gnome 项目下载了 gtk。我遵循了所有步骤,并在手动 运行 :

之后得到了这个
\\ test23.cpp
#include <gtkmm.h>

int main(int argc, char* argv[])
{
    Gtk::Main app(argc, argv);
    Gtk::Window fenetre;
    Gtk::Main::run(fenetre);
    return 0;
}


$ g++ -std=c++ test23.cpp $(pkg-config gtkmm-3.0 --cflags --libs | sed 's/ -I/ -isystem /g')
Package gtkmm-3.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtkmm-3.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gtkmm-3.0' found
bash: g++: command not found

所以我决定使用 vcpkg 安装。 但是我多次尝试安装 gtk+ 和 gtkmm 都失败了。 这是我得到的:

C:\WINDOWS\system32>vcpkg install gtk
Computing installation plan...
The following packages will be built and installed:
    gtk[core]:x86-windows
  * harfbuzz[core,glib]:x86-windows
  * libepoxy[core]:x86-windows
  * pango[core]:x86-windows
Additional packages (*) will be modified to complete this operation.
Detecting compiler hash for triplet x86-windows...
Starting package 1/4: libepoxy:x86-windows
Building package libepoxy[core]:x86-windows...
Could not locate cached archive: C:\Users\Manolo97233\AppData\Local\vcpkg\archives\f7\f743ec00b235ca7fd37812284b7d2e09d89b368a.zip
-- Using cached C:/Windows/SysWOW64/vcpkg/downloads/anholt-libepoxy-1.5.4.tar.gz
-- Cleaning sources at C:/Windows/SysWOW64/vcpkg/buildtrees/libepoxy/src/1.5.4-337c486045.clean. Use --editable to skip cleaning for the packages you specify.
-- Extracting source C:/Windows/SysWOW64/vcpkg/downloads/anholt-libepoxy-1.5.4.tar.gz
-- Applying patch libepoxy-1.5.4_Add_call_convention_to_mock_function.patch
-- Using source at C:/Windows/SysWOW64/vcpkg/buildtrees/libepoxy/src/1.5.4-337c486045.clean
-- Acquiring MSYS Packages...
CMake Error at scripts/cmake/vcpkg_execute_required_process.cmake:72 (message):
    Command failed: C:/Windows/SysWOW64/vcpkg/downloads/tools/msys2/msys64/usr/bin/bash.exe --noprofile --norc -c "pacman -S --noconfirm --needed pkg-config"
    Working Directory: C:/Windows/SysWOW64/vcpkg/downloads/tools/msys2
    Error code: 1
    See logs for more information:
      C:\Windows\SysWOW64\vcpkg\buildtrees\libepoxy\msys-pacman-x86-windows-err.log

Call Stack (most recent call first):
  scripts/cmake/vcpkg_acquire_msys.cmake:127 (vcpkg_execute_required_process)
  scripts/cmake/vcpkg_configure_meson.cmake:106 (vcpkg_acquire_msys)
  ports/libepoxy/portfile.cmake:16 (vcpkg_configure_meson)
  scripts/ports.cmake:79 (include)

我认为我的 msys2 有问题,所以我尝试在安装工具包之后单独安装它,但没有成功。 然后我尝试分别 运行 其他与 gtkmm 相关的包,比如 pango,我得到了这个:

//vcpkg install pango
Computing installation plan...
error writing file: C:\Windows\SysWOW64\vcpkg\buildtrees[=12=].vcpkg_dep_info.cmake: The data is invalid.

有人解释了一个主题,它可能是其他软件包的 vcpkg 可访问性问题。我修改了 systWOW64 文件参数中其他包的 vcpkg 的可访问性,但它没有成功。 不知道是不是vcpkg的问题,因为我没有卸载重装。

我正在寻找 solutions/options,我缺乏想法,我真的需要一些帮助。 谢谢

使用 JHbuild,它是您从源代码构建 GNOME 应用程序时的朋友!

运行 jhbuild build gtkmm --nodeps,构建的文件将安装在$HOME/jhbuild/build。要使用它编译您的应用程序,您必须导出环境变量 PKG_CONFIG_PATH,如下所示:
export PKG_CONFIG_PATH="$HOME/jhbuild/build/lib/pkgconfig" (在终端中,您是 运行 g++ 命令的来源) 而且你必须安装 g++。 我不知道您如何将 bash 与 visual studio 一起使用,但是 如果你有 apt,你可以使用以下命令安装 g++ 和 gtkmm :
apt install libgtkmm-3.0-dev libgstreamermm-1.0-dev g++ 如果您已经下载了 gtk,那么下载的包中必须包含一个 .pc 文件。安装下载包时此文件所在的目录必须添加到 PKG_CONFIG_PATH.

感谢 Frederic 的回答,它对我很有帮助。

我还有一个问题。为了将外部包添加到我的 C/C++ 项目中,我阅读了有关如何将静态库 (.a) 转换为静态库 (.lib) 的不同主题。 我下载了软件包,我想使用它们的路径手动添加它们。

我添加了我的包裹如下:

1 / 添加headers在项目的编译目录中的路径:

-> 项目/属性菜单

-> 在左侧树中,选择配置属性 - C/C++ - 常规

->右边table,第一行“Other Include directories”:添加包含headers

的库目录

2 / 在项目的编译器目录中添加.lib 的路径:

-> 项目/属性菜单

-> 在左侧树中,选择配置属性 - Link 编辑器 - 常规

-> 在右侧 table,“附加库目录”行:添加包含 .libs

的库目录

3 / 指定您的项目链接的库:

-> 项目/属性菜单

-> 在左边的树上,选择 Configuration Properties - Link Editor - Enter

->右边table,第一行“Additional dependencies”:添加你的项目必须链接的.lib库

但我寻找 .lib 文件来添加到我的链接器输入,我找到了 .a 文件和 .dll 文件,但我不知道该怎么做。 . a 文件和 .lib 文件几乎相同。 .a 文件似乎在 linux 下使用,而 .lib 在 windows 下使用。 我试图添加 .a 文件但不成功。我想知道是否可以将 .a 文件转换为 .lib 文件。 谢谢