我希望 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
考虑到我确实提供了 build 命令,我认为这是不正确的src/foobar.cc
。
现在,我尝试了一些解决方法:
如果我
build/variant1/foobar.cc
在 Program 中替换为src/foobar.cc
,它确实有效,但显然foobar.o
是在src/
而不是build/variant1
如果我
src/foobar.cc
在 Command 中替换为build/variant1/foobar.cc
,它确实有效,但我希望在src/
;中生成代码 (也因为诸如包含目录中的相对路径之类的东西将不起作用,除非duplicate=1
)如果
duplicate=1
,我收到类似的错误消息,但这次提到了变体目录:build/variant1/foobar.cc
找不到源,目标需要build/variant1/foobar.o
有没有解决的办法?这是 SCons 中的限制/错误,还是我这边存在根本性的误解?