CodeLite 10.0.1を使用してUbuntu 16.04でC++ 11をプログラミングしています。次のようにCodeLite 10.0.1はイテレータに対してオートコンプリートできませんか?
私のプロジェクトからの抜粋です:今すぐ
#include "llvm/Pass.h"
#include "llvm/IR/Function.h"
#include "llvm/Support/raw_ostream.h"
#include <map>
#include <string>
.............
for (Function::iterator bb = F.begin(), e = F.end(); bb != e; ++bb) {
bb-> // NO AUTOCOMPLETE SUGGESTIONS
// assign integer ids to BasicBlock's
if (bb->hasName()) {
bbNameToId[bb->getName()] = bbId++;
} else {
bb->setName(Twine(bbName + std::to_string(bbId)));
bbNameToId[bb->getName()] = bbId++;
}
for (BasicBlock::iterator i = bb->begin(), e = bb->end(); i != e; ++i) {
if(opCounter.find(i->getOpcodeName()) == opCounter.end()) {
opCounter[i->getOpcodeName()] = 1;
} else {
opCounter[i->getOpcodeName()] += 1;
}
}
}
、CodeLiteは簡単に上記のコードでF
のような関数のオートコンプリートの提案を行うことができます。ただし、bb->
の提案はありません。Function::iterator
です。また、コード補完は、C++標準ライブラリで宣言されたすべてに対して機能します。
コード補完の検索パスは、次のように設定されています
/usr/include
/usr/include/c++/5
/usr/include/c++/5/backward
/usr/include/x86_64-linux-gnu
/usr/include/x86_64-linux-gnu/c++/5
/usr/lib/gcc/x86_64-linux-gnu/5/include
/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed
/usr/local/include
を、プロジェクトはうまくビルドします。 CTagsとClangの両方の補完を有効にしました。
どうすればこの問題を解決できますか?
は非増分バージョンにはないということですか? – Shuzheng
"インクリメンタル"は 'compile_commands.json'を生成しますが、フルバージョンはキャッシュをクリアしてすべてを解析します。 clangコードの補完には、 'compile_commands.json'ファイルだけが必要です。両方ともそれを生成しますが、 "インクリメンタル"バージョンはそれをはるかに高速に行います:) – Eran
私はすでに完全なコード補完を経験していませんか? – Shuzheng