我有一個相當複雜的scons系統,包含多個子目錄,包含許多庫和可執行文件。目前,每個SConscript都有自己的克隆環境,所以我可以在每個SConscript的基礎上輕鬆地更改CFLAGS(或任何其他可修改的),但是我想改變它的每個目標,甚至每個目標文件目標。scons:更改單個源文件的編譯標誌
我創建了一個簡單的示例SConscript和SConstruct來解釋問題,如下所示。
SConstruct:
env = Environment()
env['CFLAGS'] = '-O2'
env.SConscript('SConscript', 'env')
SConscript:
Import('env')
env=env.Clone()
env.Program('foo', ['foo.c', 'bar.c'])
如果我運行scons的,無論是文件foo.c和bar.c具有-02標誌編譯。我可以通過在SConscript中添加env['CFLAGS'] = '...'
來輕鬆更改SConscript範圍的標誌,但是讓我們假設我想用-O2
編譯foo.c,但是bar.c完全調試,-O0 -g
。我該怎麼做(以最簡單的方式)?
該示例使用gcc,但我希望可以與任何編譯器一起使用的東西。
這經常發生在性能敏感的項目中,在沒有優化的情況下編譯所有內容都會導致不可接受的性能,但需要調試一個單獨的文件(或其中的一個子集)。
Thanks @GaryO,這是最簡單的解決方案,正是我一直在尋找的!對SConscript進行單行更改以添加一些標誌,暫時僅用於調試。不知何故,我無法在scons手冊中找到它,謝謝我馬上試試! – Daniele
經過測試,工作,很簡單,正是我在找的,謝謝! – Daniele
一個更有趣的問題是如何製作一個隨每個目標而變化的選項,例如,如果你想使用/ Fd {fname}選項來命名基於目標名稱的.pdb文件。 –