禁止的消息
回答
其實我一直在尋找別的東西,加入這行來Makefile文件:
.SILENT:clean
同時靜靜地執行「乾淨」目標的每一步。
直到有人指出一些缺點,我用這個作爲我最喜歡的解決方案!
如果你在命令前加@,它不會回顯到shell。嘗試將rm更改爲@rm。 (Reference)
要下手:實際的命令必須在下一行(或至少是與GNU的情況下做,這可能是與其他製作的不同 - 我不知道那)
clean:
rm -rf *.o
(注意,你需要一個TABrm -rf *.o
之前在每一個規則)
使其成爲沉默可以通過前綴一個@
來完成:
所以你的makefile變得
clean:
@rm -rf *.o
如果沒有*.o
要刪除的文件,你仍然可能最終得到一個錯誤信息。爲了抑制這些,添加以下
clean:
[email protected] -rf *.o 2>/dev/null || true
2>/dev/null
管道的任何錯誤信息到/ dev/null的 - 所以你不會看到任何錯誤- 在指令前面的
-
可以確保make
忽略非零返回代碼
這是處理它希望bash的經典方式,但我一直在尋找解決這個問題的GNU Make方法。 當然,我在下一行有命令,只是急着寫下這個問題。 順便說一句,你怎麼看.SILENT答案(我的一個朋友發現)? – claf 2010-06-30 15:16:52
我還沒有真正使用.silent,GNU Make手冊指出它僅支持歷史原因,但我確實喜歡它。它比你的命令中的許多'@'少冗長。 – plof 2010-07-01 02:20:59
來想一想,'''和'||真正的「太多了 - 他們中的任何一個都應該足夠了。如果沒有東西需要刪除,你需要其中一個來防止Gnu Make退出。更好的辦法是使用'rm -f * .o',因爲如果沒有東西需要刪除,它不會返回錯誤。 – plof 2010-07-01 02:28:35
從手冊:.SILENT
is essentially obsolete since @
is more flexible.
更糟糕的是,使印了太多的信息。警告/錯誤/私人消息被掩埋在輸出中。另一方面-s
(.SILENT
)只能壓縮任何東西。特別是「無所事事」和「最新消息」可能是一種痛苦。沒有選擇來壓制他們。你必須積極地過濾它們或使用像colormake這樣的東西。下面是的grep的解決方案:
make | egrep -hiv 'nothing to be done|up to date'
但產量將有行號。Perl的解決方案因此比較好,因爲它抑制了行號,並立即刷新標準輸出:
make | perl -ne '$|=1; print unless /nothing to be done|up to date/i'
製作是一個有缺陷的工具。 "What’s Wrong With GNU make?"解釋這一點比我能做得更好。
我回應了這個古老的話題,因爲它出現在搜索的高位,答案令人困惑。要做用戶想要的,只需要:
clean:
@rm -f *.o
@表示make不會迴應該命令。 -f
參數rm
告訴rm
忽略任何錯誤,例如沒有*.o
文件,並始終返回成功。
我從OP的例子中刪除了-r,因爲它意味着遞歸,這裏我們只是rm
ing .o
文件,沒什麼可遞歸的。
不需要2>&1 >/dev/null
,因爲-f
不會打印錯誤。
.SILENT: clean
到位@
的作品,但它不是在Makefile中的同一個地方,它影響的命令,所以有人維護項目以後可能會搞不清楚。這就是爲什麼@是首選。這是更好的參考地點。
- 1. 禁止mFilter onLoad消息
- 2. 403通過Jmeter執行休息消息時的禁止消息
- 3. 如何禁止nHibernate的日誌消息
- 4. 禁止R中的C警告消息
- 5. 禁止AdMob的調試消息
- 6. 403禁止發佈的消息index.php
- 7. 禁止訪問中的錯誤消息
- 8. 403禁止消息通過OAuth 2.0
- 9. dplyr top_n() - 禁止狀態消息?
- 10. 如何禁止jQuery「undefined」消息
- 11. 禁止跟蹤消息從特定DLL
- 12. 如何禁止啓動消息
- 13. 如何禁止R啓動消息?
- 14. 禁用ssh消息
- 15. 如何在python腳本收到SIGTERM時禁止終止消息
- 16. 禁用QML的console.log()消息
- 17. 如何禁止Getopt :: Std :: getopts發出的警告消息?
- 18. VS2015 + tsconfig.json +消息:對禁止的架構進行驗證成功
- 19. 我可以在Perl中禁止fetch.pm中的錯誤消息:
- 20. Chrome的谷歌雲消息接收錯誤代碼403禁止
- 21. API GET classlist/grade調用的禁止錯誤消息
- 22. 流星reddit的OAuth錯誤[「消息::」禁止」,‘錯誤’:403]
- 23. 可以禁止Python解釋器的歡迎消息嗎?
- 24. 獲取消息:來自AWS API網關的禁止答覆
- 25. AXIGEN禁用550個消息
- 26. 消息來禁用它
- 27. 禁用PHPMailer錯誤消息
- 28. 如何禁用此消息?
- 29. 根據消息屬性臨時禁用JMS消息的傳遞
- 30. ARC禁止顯示消息發送'發佈'
的缺點是,你從來沒有從你的作品中得到任何反饋,並且沒有任何命令行與「無聲」相反以關閉它。這就像用大錘打開一個罐子。 – 2012-04-26 22:44:59