带有集成区域的 waf 多项目设置

问题描述

我有一个文件IntegrationArea一个项目 main,由 2 个子项目 ab 组成,如下所示:

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')

解决方法

我不确定我是否理解您的问题。如果你有类似的东西:

# 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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...