2014-02-11 51 views
0

我試圖建立兩個項目WAF + MSVC:Waf中不同環境之間的依賴關係?

top = '.' 
out = 'build' 

def configure(conf): 
    conf.setenv('x86') 
    conf.env['MSVC_TARGETS'] = 'x86' 
    conf.load('compiler_cxx') 

    conf.setenv('x64') 
    conf.env['MSVC_TARGETS'] = 'x86_amd64' 
    conf.load('compiler_cxx') 

def options(opt): 
    opt.load('compiler_cxx') 

def build(ctx): 
    ctx.env = ctx.all_envs['x86'] 
    ctx.program(source='x86.cpp', target='x86', name='x86') 

    ctx.env = ctx.all_envs['x64'] 
    ctx.program(source='x64.cpp', target='x64', name='x64') 

正如你可以看到我建立使用不同環境中的32位和64位的項目。我的問題是:如何設置「x64」和「x86」項目之間的依賴關係?我需要在「x64」完成後構建「x86」項目。

我剛剛發現設置手動依賴項的唯一方法是add_manual_dependency方法,但似乎只能在單個環境中使用它。知道如何實現「use = ['xxx']」方法對於靜態庫非常有用,但對於我的情況來說也是非常棒的。有沒有可能有這樣的自動依賴關係?例如:

def build(ctx): 
    ctx.env = ctx.all_envs['x86'] 
    ctx.program(source='x86.cpp', target='x86', name='x86', use='x64_from_x64_environment') 

    ctx.env = ctx.all_envs['x64'] 
    ctx.program(source='x64.cpp', target='x64', name='x64') 

我真的很感謝任何幫助! :)

回答

0

我認爲你必須在第一個目標之後添加此

ctx.add_group()