静态库和SCons的传递依赖性

hoc*_*chl 5 c python dependencies scons

在为两者构建两个库和测试程序时,我偶然发现了一个看似简单的问题.

问题:我有两个静态库,libA和libB,libB依赖于libA.我不想明确地将使用libB的所有程序链接到libA,我希望SCons看到如果程序链接到库B,它也应该链接到库A.

我已经构建了一个简单的例子来说明这个问题.由于我找不到合适的文件托管服务器并且这与编程有关,因此我创建了一个小型SVN存储库:

svn checkout https://example-repository.googlecode.com/svn/trunk example-repository
Run Code Online (Sandbox Code Playgroud)

或者你可以在这里下载一个tarball .

Ben*_*enG 4

正如您所描述的,SCons 没有内置支持表达传递库依赖项,但它的近亲Waf却有。请参阅Waf 书中有关“使用”功能的文档。Boost 构建系统以不同的名称提供此功能。如果您愿意编写一点 Python 代码,您也可以选择在 SCons 中自己实现这一点。

您可以使用的一个技巧是将回调定义为构造变量(即,将通过 Python 函数调用扩展的字符串)。让该函数调用根据您在解析时计算的某种形式的依赖关系图(即通过 SConscripts 中找到的方法调用)来计算您所需的库的传递列表,并且您不必为每个目标重复完整的库列表或环境。