我希望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/
中;(还有因为像 include 目录中的相对路径之类的东西将无法工作,除非duplicate=1
)如果使用
duplicate=1
,那么就会出现类似的错误信息,但这次是指明变体目录的:源文件
build/variant1/foobar.cc
未找到,需要被目标文件build/variant1/foobar.o
使用