Использование CodeLite 5.1 в Ubuntu 12.10:
Создано минимальное приложение QTGui. Построен и побежал хорошо.
#include <QApplication>
#include <QButton>
были вставлены мастером в файл main.cpp — без проблем. Я добавил:
#include <QString>
согласно документации QT, и обработчик говорит мне, что не может найти QString. Я проверил параметр включения для проектов —
../qt4
а также
../qt4/qt4GUI
там правильно. Я старался:
#include <qt4/QString>
с разными перестановками регистров — все не поехали.
В чем дело? (Публикация этого также на форуме CodeLite).
В то время как QApplication
а также QButton
являются частью модуля Qt GUI, QString
является частью модуля Qt Core. GUI зависит от Core, поэтому библиотека Core уже связана, это не проблема.
Кажется, проблема в том, что ваш путь включения включает в себя только верхний уровень Qt, а также подкаталог GUI. Заголовочные файлы Qt структурированы в модули, по одному каталогу для каждого модуля. Это означает, что <QApplication>
а также <QButton>
Заголовки в ../qt4/qt4GUI
и таким образом может быть найден компилятором.
Тем не мение, QString
находится в ../qt4/qt4Core
(1) и, следовательно, либо должен быть включен в качестве #include <QtCore/QString>
(2) который будет выглядеть в правильном подкаталоге модуля, или путем добавления подкаталога к путям включения в конфигурации проекта (рекомендуется), поэтому #include <QString>
тоже работает
(1) Я думаю, что это должно быть ../qt4/QtCore
и для Qt GUI ../qt4/QtGui
, но вы написали что-то другое в вопросе …
(2) Внутри Qt классы других модулей включаются следующим образом, то есть относительно пути включения верхнего уровня Qt, так что если вы включаете класс, который использует QString
(QApplication
один пример), он работает без добавления другого включения.
Других решений пока нет …