如何在pkg-config中处理备用后端依赖项?

时间:2011-06-01 12:26:25

标签: pkg-config

我有一个分为前端和多个后端的库。客户端程序必须链接到前端库和一个后端库。当为前端调用pkg-config时,我希望pkg-config强制指定一些后端。

让我们调用前端的libfoo-frontend,后端的libfoo-backend-alpha和libfoo-backend-beta。

一个明显的解决方案似乎是反转依赖关系 - 每个后端都有'Requires:libfoo-frontend'。但是,这不起作用,因为pkg-config将在 libfoo-frontend标志之前提供libfoo-backend标志。即,我们最终会得到一个带有“-lfoo-backend-alpha -lfoo-frontend”的链接命令行,并且链接器最终不会包含libfoo-backend-alpha,因为它不满足任何未满足的依赖关系。前面的对象,然后在libfoo-frontend中的依赖项未被满足时稍后失败。

我目前的解决方案是pkg-config规范没有指定前端和后端之间的依赖关系。用户可以链接前端和后端。缺点是用户必须知道这是必需的,并且如果他们忘记链接到后端,他们将使链接因未满足的依赖性而失败,这是相对没有信息的。

我希望的解决方案是让前端规范有一行像'Requires:libfoo-backend',并且所有后端pkg-config规范都有一行像'提供:libfoo-backend ”。然后用户可以执行类似'pkg-config --libs libfoo-frontend libfoo-backend-beta'的操作。如果用户忘记指定一些后端,pkg-config会抱怨提醒他们。不幸的是,pkg-config没有这样的'Requires'关键字。

0 个答案:

没有答案