在除';src&x27;使用SCON时,不会将DEP复制到variant_dir
我正试图在我的项目中使用SCON。到目前为止,我有以下几点: SConstruct在除';src&x27;使用SCON时,不会将DEP复制到variant_dir,d,scons,D,Scons,我正试图在我的项目中使用SCON。到目前为止,我有以下几点: SConstruct path = ['/usr/local/bin', '/usr/bin', '/bin'] libpath = ['/usr/local/lib', '/usr/lib', '/lib'] env = Environment() env.Append(ENV = {'PATH' : path}) env.Append(DFLAGS = ['-version=placeholder', '-g']) env.App
path = ['/usr/local/bin', '/usr/bin', '/bin']
libpath = ['/usr/local/lib', '/usr/lib', '/lib']
env = Environment()
env.Append(ENV = {'PATH' : path})
env.Append(DFLAGS = ['-version=placeholder', '-g'])
env.Append(LIBPATH = libpath)
env.Append(DPATH = '#/build_debug/')
Export('env')
env.SConscript('src/SConscript', variant_dir = 'build_debug',
exports = {'DFLAGS' : '-debug'})
src/SConscript
Import('env')
env.Program(target = 'a.out',
source = ['stubs.d'] + Glob('*/*.d'))
但是,在尝试构建时,它会提供:
build_debug/foo/foo.d:9: Error: module bar is in file 'bar/bar.d' which cannot be read
检查ls build\u debug
表明并非所有文件都已复制
我想我早就开始工作了;但从那以后我一定把事情搞砸了
编辑:
我所有的源代码都在project/src/中,我希望构建发生在project/build/中;我的SConstruct文件位于project/中,scon不支持源代码外生成,因此不要对意外行为感到惊讶 他们正在讨论不久将此功能添加到SCons开发人员的电子邮件列表中,但他们没有说何时添加 我注意到您的脚本中有一些地方可以改进: 在SConstruct中对SConscript()的调用中,导出是DFLAGS变量,但在SConscript中,您只导入“env”,因此DFLAGS变量将不可见。您应该导入DFLAGS,或者只是将环境中的DFLAGS设置为不同的变量,然后从SConscript中的环境中获取它 此外,我不确定库路径是否能正常工作。你有这个:
libpath = ['/usr/local/lib', '/usr/lib', '/lib']
env.Append(LINKFLAGS = libpath)
但实际上,SCON不会在每个libpath前面加上
-L
。不使用LINKFLAGS
使用LIBPATH
,然后SCons将在-L
前加上前缀。您可以尝试将duplicate
参数设置为0
env.SConscript('src/SConscript', variant_dir = 'build_debug',
exports = {'DFLAGS' : '-debug'}, duplicate=0)
但是我的印象是variant_dir的目的是在源代码树之外的目录中构建它?谢谢LIBPATH的事情。@Intrivator,听起来我们需要澄清一下。SCons只支持构建与根SConstruct位于同一子目录结构中的源代码,与variant_dir的位置类似。通常,源代码外是指将variant_dir指定为不在SConstruct下的目录。你想做什么?也许我的术语弄错了;我将更新问题以澄清:“SCON不支持源代码外构建”。我不明白。variant_dir不应该使源代码外的构建工作正常吗?提问者的构建目录不是在SConstruct下面吗?我的问题是它没有复制内容。:)无论如何,谢谢你。