【发布时间】:2014-09-16 17:22:32
【问题描述】:
我最近尝试从源代码安装一个应用程序(Debian Wheezy 上的 dwb,如果它有所作为)。在安装时,它会因一些依赖性问题而窒息,但对我来说,我似乎遇到了这种依赖性。 I wasn't the only person with this problem. 这让我在项目的 config.mk 中四处寻找。
在 config.mk 中我发现了几个看起来像这样的块:
REQPKG=foo
ifeq ($(shell pkg-config --exists $(REQPKG) && echo 1),1)
LIBS=$(REQPKG)
else
$(error Cannot find $(REQPKG))
endif
这对我来说似乎很违反直觉。我搜索和搜索。阅读手册页,咨询谷歌。阅读有关 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
而不是在我看来:
ifeq (($(not(True) && True)),True)
/*do things*/
else [...]
我对 pkg-config 缺少什么?它这样做是因为它是一个 shell 实用程序和一些关于它们的奇怪约定吗?
另外,为什么文档如此稀少?我是否缺少可以提供我正在寻找的信息的资源?
PS 我对 C 没有任何实际经验,所以如果我的示例代码看起来很奇怪......
【问题讨论】:
标签: c linux makefile pkg-config