如何让scons在构建目录中编写构建目标?

时间:2012-01-13 08:23:59

标签: scons

我正在尝试使用Scons构建一个静态库。 我想要做的就是在名为“build-release”的构建目录中构建目标文件和库文件。

使用VariantDir我可以让scons在build-release目录中构建目标文件,但是libStringUtilities.a仍在当前目录中写入,为什么?

拜托,任何帮助都会很好。

我的文件夹布局如下。

MyLib/
  \--- project/
          \---- SConstruct
          \---- SConscript
  \--- src ( source files )
  \--- build-release ( build directory)

这是我的Sconscript ......

  Import('env')

  source_files = Glob('../build-release/*.cc')
  object_files = env.Object(source_files)
  env.StaticLibrary('StringUtilities',object_files)

...和Sconstruct文件。

  import os

  env = Environment ( ENV = os.environ )

  Export('env')

  VariantDir('../build-release','../src',duplicate= False)
  SConscript('SConscript')

2 个答案:

答案 0 :(得分:0)

如果不自己尝试,请尝试使您的SConstruct文件看起来像这样吗?

import os

env = Environment ( ENV = os.environ )

env.VariantDir('../build-release', '../src',duplicate= False)
env.SConscript('SConscript', 'env')

答案 1 :(得分:0)

我在使用scons(顶层文件夹中的sconstruct和子文件夹中的sconscripts)时通常使用目标文件夹结构,但我认为问题是您在源文件夹中构建库。这就是为什么它会在那里结束。

尝试:

env.StaticLibrary('../build-release/StringUtilities',object_files)