waf跨项目依赖
waf cross-project dependencies
我有一个简单的 waf 项目:
$ root
|-- a
| `-- wscript
|-- b
| `-- wscript
`-- wscript
根 wscript 是
def configure(conf):
pass
def build(bld):
bld.recurse('a b')
a
wscript 是
def build(bld):
bld (rule = 'touch ${TGT}', target = 'a.target' )
b
wscript 是
def build(bld):
bld (rule = 'cp ${SRC} ${TGT}', source='a.target', target='b.target')
我想要实现的是拥有一个构建系统,该系统首先触及 a.target
,然后将其复制到 b.target
。我想要 a.target
和 b.target
的规则保留在各自的 wscript
文件中。
当我尝试启动它时,却收到以下错误:
source not found: 'a.target' in bld(target=['b.target'], idx=1, tg_idx_count=2, meths=['process_rule', 'process_source'], rule='cp ${SRC} ${TGT}', _name='b.target', source='a.target', path=/<skip>/waf_playground/b, posted=True, features=[]) in /<skip>/waf_playground/b
如果我将这两个规则放入一个 wscript
文件中,一切都会很好用。
有没有办法让一个目标依赖于其他 wscript
中定义的另一个目标?
当您指定 source/target 时,表示相对于当前 wscript
文件。
$ waf configure build
...
source not found: 'a.target' in bld(source='a.target, ...)
...
$ tree build
build/
├── a
│ └── a.target
...
知道了,解决方法是在 b/wscript
中正确引用 a.target
源文件:
def build(bld):
bld (rule = 'cp ${SRC} ${TGT}', source='../a/a.target', target='b.target')
任务现在可以正确找到源文件:
$ waf build
Waf: Entering directory `.../build'
[1/2] Creating build/a/a.target
[2/2] Compiling build/a/a.target
Waf: Leaving directory `.../build'
'build' finished successfully (0.055s)
$ tree build
build/
├── a
│ └── a.target
├── b
│ └── b.target
...
我有一个简单的 waf 项目:
$ root
|-- a
| `-- wscript
|-- b
| `-- wscript
`-- wscript
根 wscript 是
def configure(conf):
pass
def build(bld):
bld.recurse('a b')
a
wscript 是
def build(bld):
bld (rule = 'touch ${TGT}', target = 'a.target' )
b
wscript 是
def build(bld):
bld (rule = 'cp ${SRC} ${TGT}', source='a.target', target='b.target')
我想要实现的是拥有一个构建系统,该系统首先触及 a.target
,然后将其复制到 b.target
。我想要 a.target
和 b.target
的规则保留在各自的 wscript
文件中。
当我尝试启动它时,却收到以下错误:
source not found: 'a.target' in bld(target=['b.target'], idx=1, tg_idx_count=2, meths=['process_rule', 'process_source'], rule='cp ${SRC} ${TGT}', _name='b.target', source='a.target', path=/<skip>/waf_playground/b, posted=True, features=[]) in /<skip>/waf_playground/b
如果我将这两个规则放入一个 wscript
文件中,一切都会很好用。
有没有办法让一个目标依赖于其他 wscript
中定义的另一个目标?
当您指定 source/target 时,表示相对于当前 wscript
文件。
$ waf configure build
...
source not found: 'a.target' in bld(source='a.target, ...)
...
$ tree build
build/
├── a
│ └── a.target
...
知道了,解决方法是在 b/wscript
中正确引用 a.target
源文件:
def build(bld):
bld (rule = 'cp ${SRC} ${TGT}', source='../a/a.target', target='b.target')
任务现在可以正确找到源文件:
$ waf build
Waf: Entering directory `.../build'
[1/2] Creating build/a/a.target
[2/2] Compiling build/a/a.target
Waf: Leaving directory `.../build'
'build' finished successfully (0.055s)
$ tree build
build/
├── a
│ └── a.target
├── b
│ └── b.target
...