2013-01-06 25 views
0

有這樣一行共享庫:使用SCons:對我有sconscript每一個源文件

src_base_dir = os.path.join(shader_env['ROOT_DIR'], 'contrib', 'extensions', 'scrubs', 'shaders') 
source_files = [os.path.join('shaders', x) for x in find_files_recursive(src_base_dir, ['.c', '.cpp'])] 

現在我從知道:

EXT_SHADERS = shader_env.SharedLibrary('scrubs', source_files, LIBPREFIX='') 

而且source_files從「縮寫」在docs此建立一個共享庫命名爲磨砂但什麼需要的是在源文件夾中的每個.cpp文件一個共享庫只建從它對應的源FIL E(的.cpp),並選擇在以後添加更多的數據源,而改變構建腳本,就是這個樣子可能cause.I'm在文檔中沒有看到任何東西或其他地方的任何東西,

在此先感謝

+0

是同一目錄下的源文件根SConsctruct? Scons不會構建被認爲超出目錄樹的文件。 – Brady

+0

嗨,如果我corectly瞭解你,沒有,你可以看到路徑與src_base_dir線源文件的文件夾,並sconscript文件只是該文件夾以外,SConstruct在ROOT_DIR,這種建立很好的爲一個共享庫,但是這不是什麼我需要... –

回答

1

如果您希望每個源文件的共享庫,該庫的名字有相同的基本名稱與源文件(fileName1.cc => libfileName1.so,fileName2.cc => libfileName2.so),那麼你就必須多寫一些python代碼,最好使用os.path.splitext()函數。

Here就是一個例子。

此外,從你的答案,我看到源文件不在相同的目錄結構爲根SConsctruct,這是不被支持SCons的可能性。這裏有兩個例子(一個支持,其他沒有)

支持的目錄結構

topDir/ 
    SConstruct 
    srcDir/ 
    srcFile1.cc 
    srcFile2.cc 

不支持目錄結構

topDir/ 
    subDir1/ 
    SConstruct 
    subDir2/ 
    srcFile1.cc 
    srcFile2.cc 
+0

沒錯,這就是我在想什麼,感謝您的例子,是我的目錄結構是你的第二個例子,但我並沒有創建(我只給編輯我自己的需要)和它的工作原理這樣,讓我們​​留下一邊,因爲機制是,你把你的可選的東西放到擴展文件夾中,它只會建立,如果你把它稱爲sconstruct的選項,希望有一定道理 –