2011-06-09 39 views
2

我使用包裝方法來組合靜態庫,如下所示。scons包裝方法的依賴

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

,並用作在scons的正在執行

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

但是MergeLibs()方法解析相本身。

如何在這裏使用依賴項。

感謝

回答

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. 

因此,它肯定是在分析階段(我認爲這是)還是讀,但它應該得到你想要的東西。