使用SCons构建外部代码树

4
我正在尝试使用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个回答

3
您可以使用存储库来实现此操作。例如,在您的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")

看起来 Repositories 正是我需要的,我以为它们与 VCS 有点关系,名字不太好 :) - nkrkv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接