Помогите начать работу с Qt - PullRequest
1 голос
/ 04 февраля 2011

Я новичок в QT и даже не могу получить стартовый пример для работы. Проблема в том, что даже QtCore не найден. Подумайте, что-то не так с моим путем или не используется правильная версия?

#include <QtCore>
#include <iostream>
#include <QtXml/QXmlSimpleReader>

int main(int argc, char *argv[])
{
QDir xmldir("/xxx/xxx");
QXmlSimpleReader xmlReader;
}

Пример ошибки: /Users/frank/xxx-build-desktop/../xxx/main.cpp:1: ошибка: QtCore: такого файла или каталога нет.

Проверен путь и путь к qmake: / usr / bin / qmake Если я запускаю qmake -v, это печатается:

QMake version 2.01a
Using Qt version 4.7.0 in /Library/Frameworks

Я использую Mac 10.6.6 Любой ответ будет оценен.

Вот файл проекта:

QT       += core gui
QT       += xml
QT       += webkit
QT       += xmlpatterns

TARGET = xxx
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app


SOURCES += main.cpp

Результаты от make:

iMac:~/xxx/ qmake -spec macx-g++
iMac:~/xxx/ ls -ltr
total 56
-rw-rw----  1 frank  staff   349 Feb  5 16:06 xxx.pro
-rw-rw----  1 frank  staff  3875 Feb  6 12:56 main.cpp
-rw-rw----  1 frank  staff  7985 Feb  6 12:56 xxx.pro.user
-rw-rw----  1 frank  staff  8974 Feb  6 12:56 Makefile
iMac:~/xxx/ make
g++ -c -pipe -g -gdwarf-2 -Wall -W -DQT_WEBKIT_LIB -DQT_XMLPATTERNS_LIB -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Qt4.7/mkspecs/macx-g++ -I. -I. -I/usr/include/QtCore -I. -I/usr/include/QtGui -I. -I/usr/include/QtXml -I. -I/usr/include/QtXmlPatterns -I. -I/usr/include/QtWebKit -I/usr/include -I. -F/Library/Frameworks -o main.o main.cpp
main.cpp:1:18: error: QtCore: No such file or directory
main.cpp: In function ‘int main(int, char**)’:
main.cpp:27: error: ‘QDir’ was not declared in this scope
main.cpp:27: error: expected `;' before ‘xmldir’
main.cpp:28: error: ‘xmldir’ was not declared in this scope
main.cpp:28: error: ‘QDir’ is not a class or namespace
main.cpp:28: error: ‘QDir’ is not a class or namespace
main.cpp:28: error: ‘QDir’ is not a class or namespace
main.cpp: At global scope:
main.cpp:25: warning: unused parameter ‘argc’
main.cpp:25: warning: unused parameter ‘argv’
main.cpp:63: warning: unused parameter ‘namespaceURI’
main.cpp:63: warning: unused parameter ‘localName’
main.cpp:63: warning: unused parameter ‘qName’
main.cpp:67: warning: unused parameter ‘namespaceURI’
main.cpp:67: warning: unused parameter ‘localName’
make: *** [main.o] Error 1
iMac:~/xxx/

Ответы [ 6 ]

3 голосов
/ 04 февраля 2011

Для большинства написанных вами приложений на C ++ Qt не сразу понятно, как скомпилировать приложение вручную. Это осложняется рядом факторов:

  1. Заголовочные файлы могут быть размещены в разных каталогах, в зависимости от их версии
  2. moc, должен быть запущен мета-объектный компилятор
  3. Нужно включить правильную версию DLL
  4. Должно быть определено количество определений препроцессора

Учитывая все вышеизложенное, проще всего использовать систему сборки, такую ​​как qmake, которая является родной для Qt, cmake или какую-либо другую систему сборки, которая поддерживает Qt.

Для новичков в Qt я рекомендую qmake.

Вот базовое использование командной строки. Qmake обеспечивает интеграцию как с Visual Studio, так и с XCode, но я не буду здесь это рассматривать:

  1. Создайте каталог для вашего проекта
  2. Напишите любые файлы, которые, по вашему мнению, вам нужны
  3. Создайте файл проекта для qmake, запустив qmake для вашего проекта следующим образом: qmake -project "CONFIG+=xml". Поскольку вы работаете на Mac, вам также может потребоваться опция -macx, но я никогда не использовал ее сам. По крайней мере, в прошлом qmake не был достаточно умен, чтобы подобрать зависимость XML, поэтому опция «CONFIG + = xml» добавляет ее явно.
  4. Создайте make-файлы из файла проекта, снова запустив qmake: qmake
  5. Теперь, когда у вас есть make-файлы, соберите приложение, используя make, nmake, gmake или соответствующую версию make для вашей системы.

Если qmake все правильно подобрал, теперь вы сможете собрать свое приложение с помощью make.

Когда вы добавляете новые файлы в ваш проект, их нужно будет добавить в файл вашего проекта (*.pro), а затем qmake выполнить повторно без каких-либо опций.

2 голосов
/ 04 февраля 2011

#include s для заголовочных файлов.QtCore - это не заголовок, это каталог, содержащий заголовки.

Поскольку вы используете QDir, измените первую строку следующим образом:

#include <QtCore/QDir>
1 голос
/ 06 февраля 2011

Довольно странно, что ваши директории / usr / include / * не существуют.Кажется, что-то не так с установкой Qt.Я не понимаю специфику Mac, но из того, что я смог выяснить, похоже, что параметр -F/Library/Frameworks, который делает передачу в G ++, должен позволять вам использовать #include <QtCore/QtCore> вместо просто #include <QtCore>.При правильной установке Qt на других платформах (Windows, Linux) обе формы одинаково приемлемы.Но, судя по тому, что G ++ не жалуется на строку #include <QtXml/QXmlSimpleReader>, форма #include <QtModule/ModuleHeader> отлично работает в вашей настройке, поэтому ее можно использовать в качестве обходного пути при условии, что других проблем нет.

Обратите внимание, что я не рекомендовал бы включать QtCore в любой форме.Он включает в себя множество вещей, большинство из которых, вероятно, бесполезны для вас, и это только увеличит время компиляции и вероятность конфликтов имен.Укажите только то, что вы намереваетесь использовать, например #include <QDir> или #include <QtCore/QDir> в вашем случае.

0 голосов
/ 07 февраля 2011

Если вы не найдете QtCore в / usr / include /, то это проблема установки. В 4.7.0 я слышал, что у людей такая же проблема, поэтому я думаю, что в 4.7.0 есть проблема с упаковкой для macs

Попробуйте получить 4.7.1 или создайте свой собственный из источников.

0 голосов
/ 05 февраля 2011

Заданные вами переменные, которые, по-видимому, находятся в вашем make-файле, на самом деле должны быть в файле QMake xxx.pro. Затем вы запускаете qmake, который генерирует Makefile из xxx.pro, и, наконец, можете запустить make. QMake использует переменные, такие как QT и SOURCES, а также свои знания Qt и вашей установки, чтобы создать правильный make-файл.

0 голосов
/ 04 февраля 2011

Если вы новичок в Qt и у вас нет особых требований к сборке (PPC, 10.4 и т. Д.), Я настоятельно рекомендую вам загрузить предварительно упакованный Qt SDK вашей платформы. И используйте прилагаемую IDE, Qt Creator , чтобы начать. Это заставит ваши ноги промокнуть быстро и менее болезненно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...