【发布时间】:2011-09-12 16:38:28
【问题描述】:
我正在尝试让 SCons 将 Makefile 项目从源目录复制到构建目录并运行一些命令来生成 libmoo.a,但我遇到了依赖循环错误。详情如下:
./S构造:
env = Environment()
Export('env')
dirs = ['.']
variant_dir = 'build'
for dir in dirs:
SConscript(dir + '/' + 'SConscript', variant_dir=variant_dir + '/' + dir, duplicate=0)
./SConscript:
import os
Import('env')
env.Command(env.Dir('moo2').abspath, env.Dir('#moo').abspath, ["echo copying moo to the build dir", Copy("$TARGET", "$SOURCE")])
env.Command(env.Dir('moo2/Makefile').abspath, env.Dir('moo2').abspath, 'echo would run moo2.configure')
moolib = env.Command(env.Dir('moo2/libmoo.a').abspath, env.Dir('moo2/Makefile').abspath, 'echo would run make')
Default(moolib)
运行 scons 时出错:
scons: *** Found dependency cycle(s):
build/moo2/Makefile -> build/moo2 -> build/moo2/Makefile
build/moo2/libmoo.a -> build/moo2 -> build/moo2/Makefile -> build/moo2/libmoo.a
也试过不使用 .abspath,但这应该没关系,对吧?
我没有看到任何循环:
- build/moo2/libmoo.a 需要 build/moo2/Makefile
- build/moo2/Makefile 需要 build/moo2
- build/moo2 需要 (source/)moo
scons 是如何看到一个循环的?似乎认为 build/moo2/Makefile 依赖于 build/moo2/libmoo.a,这不是我打算指定的。
也欢迎任何相关建议:-)
【问题讨论】:
标签: scons