是否有任何方法可以爲我的系統設置scons將使用的環境變量,而無需更改SConstruct文件?例如,我想在Windows上使用MinGW而不是VC++構建我的C++版本。我可以,當然,在我SConstruct文件做到這一點:將scons的環境變量設置爲在我的系統上全局使用
env = Environment(tools = ['mingw'])
但如果我這樣做,然後我編輯的東西進入我的構建文件,使其具體到我的特殊的系統配置。在我看來,這打破了便攜式構建系統的全部目的。如果我將其作爲我的存儲庫的一部分上傳給他人構建,他們可能不會使用MinGW。他們可能想要使用VC++或Clang,並且我認爲他們不應該修改構建文件(或者存儲庫中的其他任何內容)以構建程序或庫。理想情況下,任何人在環境中安裝了功能強大的C++工具鏈和scons的應用程序只能在命令行上輸入scons
,並且事情應該順利進行。這不是scons的(或者)目標嗎?還是我誤解了它的目的?
另一件事是路徑。上面的代碼還不夠,我仍然需要導入MinGW二進制文件的路徑。我讀過這個理由。但是這只是更多系統特定的信息,我必須將其放入我的構建文件中,其他人可能會使用所選擇的路徑不適用的信息。
但這不需要修改SConstruct文件?自從我問了這個問題後,我瞭解到了「site_init.py」文件,它允許我設置一些系統特定的設置。但我無法弄清楚它將如何讓我爲SConstuct文件創建的Environment對象設置默認選項。 –
@BenjaminLindley是的,用這個答案你需要修改構建腳本,但是我從你的問題理解你正在尋找一種可移植的方式來設置編譯器,並且確實可以編輯構建腳本。如果您要編輯site_init.py,請考慮設置DefaultEnvironment,如下所述:http://www.scons.org/doc/production/HTML/scons-user.html#idm12919064 – Brady
不,重點是不必修改構建腳本。當我談到「可移植構建系統」時,對我而言,這意味着,理想情況下,如果您創建了一個在您的系統上構建和運行的項目(使用可移植代碼),我應該能夠完全構建和運行項目不同的系統,沒有任何改變你的項目,其中包括構建文件。不幸的是,scons爲我做了太多的假設。我不介意告訴scons如何在我的系統上編譯C++,但我只想做一次,我希望它適用於所有項目,我的或其他人。 –