QtCreator имеет некоторые проблемы с моделью кода при использовании некоторых из фантастических возможностей C++ 11 в проекте C++/Qt. В моем случае: шаблонный псевдоним, как:Как обмануть QtCreator о существовании определения макроса
template<class T> using Ptr = QSharedPointer<T>;
QSharedPointer<SomeClass> myPtr = ...;
myPtr->... // will complete
Ptr<SomeClass> myPtr = ...; // not even parsed as a type...
myPtr->... // won't complete
Так я думал о только макро-взломе моего Ptr
определения когда QtCreator анализирует файл, но, конечно, использовать хороший шаблонный псевдоним синтаксис когда компилятор анализирует файл. Что-то вроде:
#ifdef QT_CREATOR
# define Ptr QSharedPointer
#else
template<class T> using Ptr = QSharedPointer<T>;
#endif
Ввод определение макроса в файле .pro, используя DEFINES += -D...
не будет работать, так как QtCreator достаточно умен, чтобы использовать их в модели кода (что приятно, конечно). Также правильно обрабатывается QMAKE_CXXFLAGS += -D...
(к сожалению).
Как я могу «обмануть» QtCreator, что есть макрос, но (для компилятора) нет (или наоборот)?
PS: Я использую самую последнюю версию (2.7), а также попробовал 2.6.
Попробуйте использовать экспериментальный плагин ClangCodeModel. Поскольку он использует libclang для завершения/выделения, он может анализировать everithing, который поддерживает clang. https://qt.gitorious.org/+qtcreator-clang-edgers/qtcreator-clang-stable https://aur.archlinux.org/packages/qtcreator-clang-git/ –