我正在尝试使用SCons构建一个软件,该软件依赖于系统中安装的源中可用的库。例如在/usr/share/somewhere/src
中。该目录中的*.cpp
应该构建到静态库中并与我自己的代码链接。图书馆来源中没有SConscript
。
由于库位于系统目录中,因此我没有权限,也不想将构建工件置于/usr
下的某个位置。当前工作目录中的/tmp
或.build
正常。我怀疑这可以轻松完成,但我已被所有这些SConscripts
和VariantDirs
纠缠在一起。
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解决问题的目的是什么?
答案 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")