我使用SCons在工作中構建項目,並且我試圖通過GCC的文本輸出進行解析,以生成所有編譯器警告的摘要報告每個目標因爲我們的構建腳本很長,並且有很多文本輸出到控制檯。SCons:保存/重定向gcc文本輸出(警告)
我已經在Google和這個網站上搜索了很長一段時間,而且我找不到SCons爲了實現這個目的而內置的方法。我已經嘗試將整個stdout和stderr流重定向到每個this example的文件,但只有SCons本身的輸出被捕獲,而不是它調用的任何工具。
我的下一個想法是找到SCons編譯發送給GCC的參數,並在參數字符串的末尾添加重定向。在閱讀文檔之後,似乎構建變量CCCOM
和CXXCOM
包含用於編譯的命令行。但是,當我將下面的行添加到SConstruct中時,SCons正在執行的命令行中沒有任何更改。
baseEnv['CCCOM'] += " 2> gcc-c-output.txt"
baseEnv['CXXCOM'] += " 2> gcc-cxx-output.txt"
一兩件事,做的工作是對整個SCons的命令重定向stderr流:
scons 2> stderr.txt
我想避免這種情況,但是,如果可能的話中包含SCons的一切。輸出也不一定要去一個文件。它可以保存在任何地方,只要我可以訪問它來解析並在構建結束時保存到文件。
我已經搜索了這麼久,並沒有提出任何東西,所以我不知道還有什麼要嘗試。我必須相信,我不是第一個想要這樣做的人。
我知道這些變量的命令實際上是用來編譯這就是爲什麼我他們認爲他們是很好的候選人,但SCons似乎忽略了我的修改。我甚至嘗試將它們的值設置爲空字符串,並且它仍然編譯正常。我覺得有些事情是不對的,因爲我已經看到它在搜索解決方案時修改這些變量。不過,我並沒有考慮包裝GCC可執行文件。我會在等待可能更多SCONSy的答案時探索該選項。 – EarlCrapstone
@EarlCrapstone,我很肯定這兩個變量的值會改變(將被覆蓋)爲每個編譯的cc文件,所以我不會驚訝你的mods沒有做任何事情。嘗試使用CC和CXX,這些確實會有所作爲。我修改了它們來指定一個不同的編譯器,並且確實有效。 – Brady
我知道自己做錯了什麼,但是因爲我是新人,所以不會讓我回答自己的問題四個小時。 @Brady在構建過程中,這些變量實際上沒有改變。我的問題是我正在構建共享庫對象,所以它使用'SHCCCOM'和'SHCXXCOM'來代替。 – EarlCrapstone