TLDR:假设X
是一个共享库,然后给出此代码
Y = StaticLibrary(..., LIBS = "X")
Z = SharedLibrary(..., LIBS = "Y")
有没有一种方法可以使SCons自动注意到Z
也必须与X
链接,从而自动将其添加到链接行中?
在我们的SCons构建系统中,我们有许多不同的目标,每个目标可能一次又一次地依赖于相同的库。
foo.a: Need bar.so
X.a: Need foo.a
Y.a: Need X.a
直到现在,直到几年之前,我们都需要在SConscripts上手动指定传递依赖关系,以满足中间库文件的依赖关系。例如。在上面,我们将必须手动指定
Y.a: Need X.a, need foo.a, need bar.so
然后,我们将其更改为自动整理依赖项。为此,我们仅使用递归方法(禁止循环)传播每个库依赖项。这对Y很好
但是假设X是一个共享库。然后,正确的依赖关系应该像这样
Y.a: Need X.so
在X内,我们已经封装了静态(且与位置无关)foo.a
,并且在X.so
本身中还具有先决条件声明(动态NEEDED),以便在运行时解析bar.so
。因此,在此我们不能重新声明对bar.so
和foo.a
的依赖性。
理想情况下,我们希望SCons具有这种智能,也许它已经具有,而我们直到现在才发现!
答案 0 :(得分:0)
SCons当前未实现。
欢迎提出请求。
您可能考虑将您当前的实现方式添加到scons用户邮件列表中?也许可以扩展它来执行您的要求,然后为SCons做出贡献?