2012-01-13 91 views
1

我想与Scons建立一个静态库。 我想要做的就是在名为“build-release”的构建目录中构建目标文件和库文件。如何让scons在构建目录中编写构建的目标?

使用VariantDir我可以让scons在构建版本目录中构建目标文件,但是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') 

回答

0

不用自己试试这个,试着让你的SConstruct文件看起来像这样? (子文件夹中sconstruct在顶层文件夹,并sconscripts)使用scons的时候

import os 

env = Environment (ENV = os.environ) 

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

我通常使用的目标文件夹结构,但我认为问题是,你正在建设中的源文件夹的库。这就是它在那里结束的原因。

尝试:

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