小编eea*_*ach的帖子

'pkg-config --exists' 到底是做什么的?

我最近尝试从源代码安装一个应用程序(如果有影响的话,在 Debian Wheezy 上安装 dwb)。安装时,它会因某些依赖性问题而窒息,但对我来说,我似乎正在满足这种依赖性。我不是唯一遇到这个问题的人。这让我开始研究项目的 config.mk。

在 config.mk 中,我发现了几个如下所示的块:

REQPKG=foo
ifeq ($(shell pkg-config --exists $(REQPKG) && echo 1),1)
LIBS=$(REQPKG)
else
$(error Cannot find $(REQPKG))
endif
Run Code Online (Sandbox Code Playgroud)

这对我来说似乎非常违反直觉。我找啊找啊。阅读手册页,查阅谷歌。我阅读了有关 pkg-config 的所有内容,但一无所获。手册页特别令人沮丧,因为它只是列出“--exists”作为标志,并且没有给出任何描述(我想它与--help一样不言自明)。

我开始认为 Debian 的 pkg-config 有一个错误,它返回相反的结果。但是,事实证明,当请求的包存在时,“pkg-config --exists”应该返回 0(即 False)。

为什么是这样?它不会生成更清晰的代码来返回 True/False 或 1/0 来指示所需包的存在吗?你可以这样做:

if (shell pkg-config --exists foo)
/*do things*/
else
/*throw error*/
endif
Run Code Online (Sandbox Code Playgroud)

而不是我看起来的样子:

ifeq (($(not(True) && True)),True)
/*do things*/
else [...]
Run Code Online (Sandbox Code Playgroud)

我对 pkg-config 缺少什么?它这样做是因为它是一个 shell 实用程序并且有一些关于它们的奇怪约定吗?

另外,为什么文档如此稀疏?我是否缺少可以提供我正在寻找的信息的资源?

PS 我对 C 没有任何实际经验,所以如果我的示例代码看起来很奇怪......

c linux makefile pkg-config

2
推荐指数
1
解决办法
4084
查看次数

标签 统计

c ×1

linux ×1

makefile ×1

pkg-config ×1