在 pkg-config 搜索路径中找不到包 gtk4

问题描述 投票:0回答:2

我已经在Windows 7上安装了MSYS2并且我已经成功执行了

pacman -S mingw-w64-x86_64-gtk3

(上述内容按照为 Windows 设置 GTK步骤 2)和

pacman -S mingw-w64-x86_64-toolchain base-devel

但是当我尝试使用 编译 hello world

gcc -o hello-world-gtk hello-world-gtk.c `pkg-config --cflags --libs gtk4`

我得到以下信息

Package gtk4 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtk4.pc'
to the PKG_CONFIG_PATH environment variable
Package 'gtk4', required by 'virtual:world', not found
bash: gcc: command not found

如果我尝试从 MinGW 64 位 shell 输出是

MyHome@MyHome-PC MINGW64 ~
$ gcc -o hello-world-gtk hello-world-gtk.c `pkg-config --cflags --libs gtk4`
Package gtk4 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtk4.pc'
to the PKG_CONFIG_PATH environment variable
Package 'gtk4', required by 'virtual:world', not found
hello-world-gtk.c:1:10: fatal error: gtk/gtk.h: No such file or directory
    1 | #include <gtk/gtk.h>
      |          ^~~~~~~~~~~
compilation terminated.

我也查过

$ echo $PKG_CONFIG_PATH
/mingw64/lib/pkgconfig:/mingw64/share/pkgconfig
windows gcc gtk msys2
2个回答
1
投票

上述内容按照为 Windows 设置 GTK 的步骤 2

他们的网站上似乎有一些“过时的说明”。 我实际上必须设置

以下软件包

pacman -S mingw-w64-x86_64-gtk4

一些可能的运行时问题

然后我可以编译该示例,但它运行不正常。我仍然遇到运行时错误:

--------------------------- hello-world-gtk.exe - Errore di sistema --------------------------- Impossibile avviare il programma perché libgio-2.0-0.dll non è presente nel computer. Per risolvere il problema, provare a reinstallare il programma.

看着
这个问题

我尝试将C:\msys64\mingw64\bin添加到我的系统

PATH
:它没有显示运行时错误,但exe确实无法正常工作(应用程序没有按预期显示)。
AFAICS 

gtk4-demo-application

本身在我的 Windows 上运行得不好,所以最后我不得不恢复到 GTK3,并编译了示例

GTK3 入门
gcc `pkg-config --cflags gtk+-3.0` -o example-1 example-1.c `pkg-config --libs gtk+-3.0`

上面的
编译并运行

很好。 运行时问题的解决方案

否则,可以选择

在 Windows 上从源代码构建 GTK4

无需 MSYS2 这个注释非常重要

它在我的 VirtualBox 机器上开箱即用,但是在我的配备英特尔 GPU 的物理 PC 上,我在启动时崩溃:

Unhandled exception at 0x5211345E (ig4icd32.dll) in gtk4-demo.exe: 0xC0000005: Access violation reading location 0x00000050
这可以通过使用 cairo 渲染来解决:

C:\src\gtk>set GSK_RENDERER=cairo C:\src\gtk>C:\gnome\bin\gtk4-demo.exe
结论:MSYS2 上 GTK4 的程序

总之,

set GSK_RENDERER=cairo

同样可以运行在MSYS2下编译的可执行文件
,因此最终的解决方案包括

安装
    pacman -S mingw-w64-x86_64-gtk4
  • C:\msys64\mingw64\bin;
  • 系统环境变量的开头添加
    PATH
    添加新的 
  • GSK_RENDERER
  • 系统环境变量,其值为
    cairo
    使用MSYS2 MinGW 64位shell编译(如GTK4)并运行exe

0
投票
execute_process

可能会导致问题:


execute_process(COMMAND bash -c "pkg-config --modversion gtk4"
        OUTPUT_VARIABLE gtk4_version
        RESULT_VARIABLE gtk4_failure)

message(STATUS "The gtk4 version is: ${gtk4_version}")

if(NOT ${gtk4_success} EQUAL 0)
    message("The shell command failed with error: ${gtk4_failure}")
endif()

如果您的 CMakeLists 有一个execute_process,它尝试获取有关 gtk4 的信息但失败,它可能会将以下内容写入 stdout。

Package gtk4 was not found in the pkg-config search path. Perhaps you should add the directory containing `gtk4.pc' to the PKG_CONFIG_PATH environment variable No package 'gtk4' found

	
© www.soinside.com 2019 - 2024. All rights reserved.