2010-04-07 81 views
3

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

由于库位于系统目录中,因此我没有权限,也不希望在/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问题的方法是什么?

回答

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") 
+0

看起来像仓库就是我所需要的。我认为他们以某种方式与VCS相关。坏名字:) – nkrkv 2010-04-08 09:20:52