續上篇, 記一下 Eclipse CDT 的用法, 全部加起來耗去我不少時間啊。
1-1. 匯入舊的非 Eclipse CDT 專案:
File -> New -> Makefile Project with Existing Code
之所以選用沿用舊的檔案位置, 而非開新專案再匯入程式碼, 是因為這樣比較方便和 VCS 共存。可先用 VCS ( git/hg/svn/... ) 取出專案, 再用 Eclipse CDT 來讀碼。VCS plugin 再怎麼成熟, 都不會比直接用 command line 或專屬的 GUI 來得完整。
1-2. 選 Toolchain for Indexer Settings
選 GNU Autotools Toolchain。
少勾這個, 之後匯入程式碼後會有 Type 'std::string' could not be resolved 這類鳥錯誤。因為少加了預設 header。實際要選那個 toolchain 要看開發環境而定, 沒有仔細研究, 至少在 Ubuntu 上這樣做 ok。
2. 將 Indexer 範圍改為全部
Window -> Preference -> C/C++ -> Indexer
將 Index unused headers 和 Index source and header files opened in editor 勾起來。剩下加減看看, 我有調大 Cache limits, 不知影響多大。
雖然 Eclipse CDT 會猜測 include 那些檔案而只 index 那些檔案的 symbol, 但 C/C++ 的 include 似乎是很混亂的世界, 有 macro, ifdef 等東西混在裡面, 很難光用靜態分析搞定。對我這一直活在安全的 Java 和 Python 世界的人來說, 真是晴天霹靂, 花了不少時間才明白這事。
所以結論是, 都 index 就是了, 多花些時間總比找不到來得好。還有, C++ 的世界是很危險的, 能活在 Java 或 Python 的世界的話不要過來。
3. 建 index
在左側的 Project Explorer 的 project 名稱上按右鍵, 選 Index -> Rebuild
然後等個一陣子, 之後就可開始看程式。按 F3 看定義、按 F4 看繼承關係、按 Ctrl+Alt+H 看在那些地方被呼叫, 都很方便。
注意有些檔案仍會出現 symbol not found, 自己想辦法找到它的位置 (例如用 gj), 在 Eclipse CDT 內打開後, 就會自動建該檔的 index。再回來看原本的程式, 就會找到該 symbol 了。
4. (非必要) 若有用到專案外的標頭檔, 需要另外加入
Project -> Properties -> C/C++ Genral -> Paths and Symbols
點右側中間的 C++ 再點 Add, 加入需要的標頭檔。之後再照上個步驟重編 index。
參考資料:
2011-12-19 Update
Ubuntu 11.04 的系統背景色是黑色, 而 Eclipse 部份提示字會用系統背景色, 於是變成黑底黑字的慘狀。 How to change tooltip background color in Unity? 有提到解法: 修改 /usr/share/themes/Ambiance/gtk-2.0/gtkrc 的 tooltip。然後再換到別的 theme 再換回來, 就會更新了。至於換 theme 的方式, 則是 System -> Preferences -> Appearance。
沒有留言:
張貼留言