我使用包装器方法组合静态库,如下所示。
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解析阶段执行。
我如何在这里使用依赖项。
由于
答案 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.
所以它在解析阶段仍然可以阅读(我认为必须如此),但它应该能得到你想要的东西。