scons包装器方法的依赖关系

时间:2011-06-09 20:48:59

标签: scons

我使用包装器方法组合静态库,如下所示。

def MergeLibs(env, tgt, src_list)
....
    return lib

并用作,

lib = env.MergeLibs(tgt, src_lists)
env.Depends(lib, <path_to_lib1>)
...
env.Depends(lib, <path_to_libn>)

但是MergeLibs()方法正在scons解析阶段执行。

我如何在这里使用依赖项。

由于

1 个答案:

答案 0 :(得分:1)

嗯,我对MergeLib步骤的细节不太确定,但似乎你想要其他东西依赖于你的合并lib步骤..就像你的最终程序一样?

import SCons

env = Environment()

def merge_libs(self, target, source, env):
    print "hi"
    return env.StaticLibrary(target, source)

env.Append(BUILDERS = {'MergeLibs' : merge_libs})

lib = env.MergeLibs('mrglibs', ['some_file.cpp', 'some_file2.cpp'], env)

prog = env.Program('test.cpp')

env.Depends(prog, lib)

这给了我输出:

scons: Reading SConscript files ...
hi
scons: done reading SConscript files.
scons: Building targets ...
g++ -o some_file.o -c some_file.cpp
g++ -o some_file2.o -c some_file2.cpp
ar rc libmrglibs.a some_file.o some_file2.o
ranlib libmrglibs.a
g++ -o test.o -c test.cpp
g++ -o test test.o
scons: done building targets.

所以它在解析阶段仍然可以阅读(我认为必须如此),但它应该能得到你想要的东西。