настройка нескольких проектов waf с областью интеграции

#waf

#waf

Вопрос:

У меня есть папка IntegrationArea и проект main , состоящий из 2 подпроектов, a и b это выглядит следующим образом:

 IntegrationArea

main
  |
  a
    |
    wscript
  |
  b
    |
    wscript
  |
  wscript
 

Запуск waf build main/a встраивает артефакты a/build . Запуск waf install из main/a устанавливает артефакты из a/build в IntegrationArea . Итак, после сборки артефакты доступны для сборки main/b .

Как я могу написать main/wscript так, чтобы запуск waf build из main результатов приводил к следующему:

 cd a; waf build; waf install
cd ../b; waf build; waf install
 

Мне нужно main/wscript было бы содержать что-то вроде

   bld.cmd=('build install')
  bld.recurse('a b')
 

Ответ №1:

Я не уверен, что понимаю вашу проблему. Если у вас есть что-то вроде:

 # wscript in main

def build(bld):
    bld.recurse(["a", "b"])
 

С:

 # wscript in a

def build(bld):
    bld(rule = touch, target = "a")
    bld.install_files("../integration", "a")

def touch(task):
    task.outputs[0].write("done a")
 

И:

 # wscript in b

def build(bld):
    bld(rule = touch, target = "b")
    bld.install_files("../integration", "b")

def touch(task):
    task.outputs[0].write("done b")
 

Вы можете просто перейти в основной каталог и начать установку:

 cd ~/main
waf install