2012-01-13 96 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)