0

我正在 Gnome Builder 中使用 gtk+-3.0 构建一个小型应用程序,但我想将 libzip 用于某些功能。但显然介子不接受添加 libzip。看我的片段:

foo_deps = [
  dependency('libzip', version: '>= 1.5.0'),
  dependency('gio-2.0', version: '>= 2.50'),
  dependency('gtk+-3.0', version: '>= 3.22')
]

这是我的错误信息:

../../../../../../Projetos/foo/src/meson.build:8:0: ERROR: Dependency "libzip" not found, tried pkgconfig and cmake

但 libzip 被列为 pkgconfig 包:

[vinicius@maclinux ~]$ pkg-config --list-all | grep libzip
libzip                         libzip - library for handling zip archives

和:

[vinicius@maclinux ~]$ pkg-config --libs libzip
-lzip 

最后:

[vinicius@maclinux ~]$ ls -l /usr/include | grep zip.h
-rw-r--r--  1 root root  26491 mar  2  2021 zip.h

我被困住了。我在互联网上找不到关于 libzip 一起使用介子的任何帮助。我试图省略 libzip 和一个依赖项,但介子抱怨它找不到 zip.h。

我在 ArchLinux 中运行它。

[更新] 如果我使用介子手动编译,它可以工作。该问题仅发生在 GNOME Builder 内部。

4

2 回答 2

0

如果这是一个 flatpak 环境,你必须在libzip那里安装。打开 flatpak JSON 文件并将您的库添加到该modules部分。然后它将在 flatpak 中可用。

于 2021-12-15T09:28:13.443 回答
0

如果您可以直接使用介子构建而不能使用 GNOME 构建器 - 这表明在后一种情况下缺少PKG_CONFIG_PATH配置,即带有搜索 *.pc(pkg 配置文件)的路径列表的环境变量。

检查 libzip.pc 的位置:

$ apt-file search libzip.pc
$ libzip-dev: /usr/lib/x86_64-linux-gnu/pkgconfig/libzip.pc

我从未使用过 GNOME 构建器,但我找到了以下文档页面:使用自定义 Sysroot

默认情况下,pkg-config 将在 /lib/pkgconfig 和 /usr/lib/pkgconfig 中搜索,但某些 sysroot 将它们安装在不同的位置。基于 Debian 的使用路径,例如 /usr/lib/x86_64-linux-gnu/pkgconfig。其他系统可能会使用 /usr/lib64/pkgconfig 等路径。

所以,如果 libzip.pc 在上面都没有,你应该

... 在 Preferences -> SDKs 中配置一个新的 sysroot 以允许 Builder 使用它。

它将降落到 ~/.config/gnome-builder/sysroot/general.conf

PS 检查所有 *.pc 文件的位置也很有用:

$ for f in $(locate *.pc); do dirname $f; done | uniq

并根据上述添加这些路径。

于 2021-09-18T15:14:06.320 回答