【发布时间】:2013-05-08 20:50:49
【问题描述】:
我希望 SCons 在我的 src/ 目录中为我生成一些源文件,然后在我的构建目录 build/variantX 中将它们构建为任何其他源文件。
这是我的 SCons 文件:
import SCons
def my_builder(env, target, source):
# do stuff
pass
env = Environment()
env.VariantDir('build/variant1/', 'src', duplicate=0)
env.Command('src/foobar.cc', 'src/foobar.input', action=my_builder)
env.Program('bin/test', [
'build/variant1/foobar.cc',
'build/variant1/test.cc',
])
此错误并显示以下消息:
找不到源
src/foobar.cc,目标build/variant1/foobar.o需要
考虑到我确实提供了构建src/foobar.cc 的命令,我认为这是不正确的。
现在,我尝试了一些解决方法:
如果我将 Program 中的
build/variant1/foobar.cc替换为src/foobar.cc,它确实有效,但显然foobar.o是在src/而不是build/variant1中创建的如果我将命令中的
src/foobar.cc替换为build/variant1/foobar.cc,它确实有效,但我希望在src/中生成代码; (也因为除非duplicate=1,否则包含目录中的相对路径之类的东西将不起作用)-
如果
duplicate=1,我会收到类似的错误消息,但这次提到了变体目录:找不到源
build/variant1/foobar.cc,目标build/variant1/foobar.o需要
有没有办法解决这个问题?这是 SCons 中的限制/错误,还是我这边存在根本性的误解?
【问题讨论】:
-
你有没有找到这个问题的答案?我面临着非常相似的事情。
标签: code-generation scons