如果依赖项具有另一个需要 link 静态库的依赖项,则无法 link

fails to link if a dependency has another dependency that needs to link with a static library

我有一个图书馆 (qui) that depends on the another library (termbox-d)。以及带有静态库 libtermbox.a 的 termbox-d links。

注意:我 link 编辑的 termbox-d 有一些错误,我已在我的 fork 中修复,但拉取请求尚未合并。

这就是事情变得混乱的地方:
如果我将 qui 编译为库,它会编译。表示 termbox-d link 与 libtermbox.a 编辑。

如果我用 dub build --comfig=demo 编译 qui,它将把它构建为一个可执行文件,其中的主程序使用 qui 库,而主程序库使用 termbox-d。这个构建和运行良好。表明它仍然 link 正常。

但是如果我创建另一个依赖于 qui 的包并构建它,它无法 link 和 libtermbox.a。我收到如下错误:
source/termbox/package.d:210: undefined reference totb_peek_event' So now it failed to link withlibtermbox.a`

为什么会发生这种情况,我是如何让它发挥作用的?

感谢 chat.freenode.net 上 IRC 频道#d 上的 alphaglosined,我解决了这个问题:
而不是添加
"sourceFiles" : ["libtermbox.a"]
对于 quidub.json,我必须添加
"lflags" : ["$PACKAGE_DIR/libtermbox.a"].
现在可以了。