簡體   English   中英

特定 object 文件的單線程構建

[英]Single-threaded build for specific object file

我在一個非常大的 C++ 項目上工作,在啟用所有內核的情況下完全構建需要 20-30 分鍾。 問題是有一些非常具體的源文件占用了大量的 memory 來構建(大約 5 GB),所以發生的情況是,每當構建到達這些源文件並嘗試同時構建它們時, memory 的使用量猛增,如果機器沒有足夠的 memory,系統開始交換,編譯速度大大減慢。 但是,如果我嘗試減少線程數量,編譯運行時間最終可能會達到幾個小時或更長時間——而且大多數源文件實際上並不需要那么多 memory 來編譯。

理想的情況是:go 啟動多進程編譯,然后在有問題的文件開始編譯后退回到單個編譯進程。 那么如何告訴 CMake 我希望在沒有任何其他並行編譯的情況下編譯特定的源文件?

編輯:鏈接很好,memory 尖峰發生在編譯有問題的源 cpp 文件時。

如果您找不到 cmake 標志,則另一種解決方案。

我有一個類似的問題,我使用了一個名為 distcc 的工具來解決這個問題。

對於許多較小項目的編譯時間,您不會看到太多好處,但是聽起來您的負載模式非常適合分布在一組構建工作人員上。

但是,它是 linker 的瓶頸,您的里程會有所不同。

單元/模塊,而不是一個大型的單片 C 程序,或者擴大規模(給你的機器更多的內存)。

https://github.com/distcc/distcc

distcc 不適用於所有類型的項目,但是您的聲音足夠大,以至於通過網絡分發它是值得的。

如果您確實嘗試過,請發布一些編譯時間。 我很想看看有什么不同。

祝你好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM