使用 ccache 加速編譯

故事是這樣子的,小弟在公司工作內容,要維護公司產品核心的engine,要維護當然會需要把程式碼從版本控制裡簽出來, 修改、編譯後測試修正有沒有問題,而編譯一直以來都非常花時間。
本文介紹的 ccache 是 compiler cache 的簡稱,會在編譯時存下檔案內容的 hash 與編譯結果,在未來如果有相同的檔案要編譯的時候,就不用再次呼叫 gcc/g++ 進行耗時的編譯,只要把存下的 object 檔從 cache 裡面抓出來就行了。

...

使用 iwyu 幫忙整理 include 檔案

故事是這個樣子的,寫 C/C++ 必定會遇到的就是每個檔案開頭的 #include,這可以帶入其他人寫好的程式碼,最後連結的時候再連結函式庫完成整個程式。
不過大家都知道,程式不是寫完就算了,是會長大跟更新,這時候 include 就會慢慢過時,可能本來需要的 include 現在不需要了,但通常我們不會意識到這點。
另外,在一些 project 上,會出現所謂的組合的標頭檔,例如 Qt 會有 QtGui 標頭檔,內含幾乎所有 Qt 元件的標頭, 不管需要什麼 Qt Widget 只要有 QtGui 都能搞定,但問題就是 include 一個標頭檔會帶進標頭檔裡所有程式碼,巨大的標頭檔如 QtGui 會顯著拖慢編譯速度; 如果只是一兩個檔案當然沒什麼,但在大 project 上,例如我之前改的 qucs, 我把裡面的 QtGui 全部換成專屬的 Qt Widget 之後,單核心編譯時間從原本的344秒加速到245秒,提速 29 %。

...

 October 31, 2020 |    c , cpp  |    c , cpp  | 3 min  |  YodaLee

c++ static 修飾詞

最近寫基因演算法的project,有需要使用到C++ class的static variable,因為我之前這個東西怎麼寫都會出錯, 這次好不容易在強者陳仕勳(GodGodMouse)的指導下成功寫出可以用的static,在這裡記錄一下怎麼使用C++的static(是說這些文章也多到滿出來了)。

...

 November 13, 2012 |    cpp  |    cpp  | 1 min  |  YodaLee