2010-09-14 119 views
6

我有一個庫項目,其中包含子文件夾中的一些示例。使用SCons創建分層構建

庫本身有一個SConstruct文件,每個樣本都有自己的文件夾和它自己的SConstruct文件。

我想添加一個目標到主(根)SConstruct文件,這將允許我像往常一樣編譯庫和所有的樣本,一次。

是否有一個現有的機制/建設者呢?

P.S:我不想只有一個大的SConstruct文件,因爲我希望示例文件夾保持獨立。

回答

8

http://www.scons.org/doc/production/HTML/scons-man.html

創建分層構建

注意的是,文件名的子目錄中的SConscript指定 文件 是相對於該子目錄。

SConstruct:

env = Environment() 
env.Program(target = 'foo', source = 'foo.c') 

SConscript('sub/SConscript') 

子/ SConscript:

env = Environment() 
# Builds sub/foo from sub/foo.c 
env.Program(target = 'foo', source = 'foo.c') 

SConscript('dir/SConscript') 

子/ DIR/SConscript:

env = Environment() 
# Builds sub/dir/foo from sub/dir/foo.c 
env.Program(target = 'foo', source = 'foo.c') 
+0

在文檔中找不到它。正是我需要的。非常感謝。 – ereOn 2010-09-14 14:27:15

4

對於那些像我一樣來這個問題從谷歌,我找到了一個更完整的構建庫和代碼的例子它here。如果對這個老問題的回答是不被理睬的 - 對於scons,「子目錄」,「分層」,「構建」等各種組合的大量搜索,我們建議這個頁面,就像爲了拯救別人,我花了8個多小時試圖讓分層構建工作乾淨利落)。

+0

這確實是一個很好的參考。幾年後,[我終於可以實現我的目標](https://github.com/freelan-developers/freelan-all)使用SCons分層構建:項目分爲幾個庫/樣本/應用程序,它們都使用相同的SCons文件。 – ereOn 2014-07-22 07:01:19