使用SCons构建外部代码树

时间:2010-04-07 13:34:44

标签: c++ c build scons

我正在尝试使用SCons构建一个软件,该软件依赖于系统中安装的源中可用的库。例如在/usr/share/somewhere/src中。该目录中的*.cpp应该构建到静态库中并与我自己的代码链接。图书馆来源中没有SConscript

由于库位于系统目录中,因此我没有权限,也不想将构建工件置于/usr下的某个位置。当前工作目录中的/tmp.build正常。我怀疑这可以轻松完成,但我已被所有这些SConscriptsVariantDirs纠缠在一起。

env = Environment()
my_things = env.SConscript('src/SConsctipt', variant_dir='.build/my_things')
sys_lib = env.SConscript(????)
result = env.Program('result', [my_things, sys_lib])

用SCons解决问题的目的是什么?

1 个答案:

答案 0 :(得分:3)

您可以使用Repository执行此操作。例如,在您的SConstruct中,您可以写:

sys_lib = env.SConscript("external.scons", variant_dir=".build/external")

然后在external.scons文件(位于源树中)中,添加外部源树的路径以及如何在其中构建库。

env = Environment()
env.Repository("/usr/share/somewhere/src")
lib = env.Library("library_name", Glob("*.cpp"))
Return("lib")