我正在嘗試使用SCons準備構建系統。我想在代碼生成階段使用clang
,對於其他所有代碼使用自定義編譯器工具鏈。配置SCons使用單獨的工具進行代碼生成和組裝
默認情況下,SCons配置沒有生成彙編(.s)
文件的明確步驟。
爲了解決這個問題,我創建了自己的Builder
,它發出了彙編文件。
code_generator = Builder(action = '$CC -$LOTS_OF_FLAGS -S $SOURCE -o $TARGET', suffix = '.s')
env.Append(BUILDERS = {'CodeGenerator':code_generator})
然後我用這個Builder
我的源文件,並通過所產生的NodeList
到Program
。
for file in Glob('*.c'):
sources += env.CodeGenerator(file)
env.Program('say_hello', sources)
這個效果很好,當我不修改任何變量。我使用gcc
獲得可執行文件。
但是,當我嘗試替換適當的變量以使SCons使用自定義工具鏈(使用env.Replace(CC='clang')...
)時,只生成一個程序集文件。我的自定義Builder
不叫上其他任何文件和SCons的努力只有一個目標文件鏈接(這顯然失敗)
- 我怎樣才能讓SCons的運行上的所有文件生成器,包括用於連接這些 目標文件?
- 有沒有更好的方法來完成我想要做的事情?我剛剛開始與SCons合作。
甚至建議修復後,我一直面臨着同樣的問題。但是,感謝關於手冊頁中額外文檔的評論。你是對的,我只是指用戶指南。如果我成功,我會進一步調查並報告。 – Buzzy
您正在使用哪個版本的scons? –
在Mac上安裝使用Homebrew:腳本:v2.1.0.r5357 引擎:v2.1.0。r5357 – Buzzy