我已經通過示例scons構建這裏,發現他們想提供一個適合我的項目的解決方案。Scons Hierachical構建
的結構如下:
root/
Module_A/
include/
foo.h
bar.h
src/
foo.cpp
bar.cpp
Module_.../
每個模塊都遵循同樣的結構,所有的.h的一個包含文件夾和CPPS一個src文件。每個模塊構建到一個共享對象中。沒有可執行文件。
模塊具有交叉依賴性。例如Module_A是日誌記錄機制,它用在模塊B,C,D等中。同樣,Module_B是配置加載器,它在其他幾個模塊中使用。而Module_C將成爲IPC模塊,幾乎用於列出的每個模塊中。最後,Module_D是命令中心,並鏈接到每個其他模塊(字面上)。
我有興趣替換當前使用遞歸make構建項目的設置。我正在嘗試構建必要的sconstruct和SConscripts,但我甚至都是新手,更不用說scons了。
我有興趣將每個模塊的.cpp和.h文件轉換爲.so,並且可以像make make一樣自動解決它的依賴關係。
在SConscript中,我目前使用glob來獲取* .cpps,然後在CPPPATH中包含模塊的'./include'。 我用
env.SharedLibrary(CPPATH='./include', source= (list of the cpps))
但由於這依賴於其他模塊,它不會工作,指出正在使用的「未聲明」的其他模塊的功能。
我該如何着手使用分層scons設置來構建這種複雜的結構?
我不明白你的這個說法:「但是因爲這取決於其他模塊,它不會工作,指出正在使用的「未申報的其他模塊的功能「'這是否會因包含依賴項而失效?如果是這樣,那麼它正確指定包含路徑的簡單問題 – Brady