2011-02-04 104 views
1

我是QT的一名新手,甚至无法获得开始的例子。问题是,即使QtCore没有找到。认为我的道路有问题或者没有使用正确的版本?错误的帮助Qt入门

#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 

结果从化妆:

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/ 
+0

当你运行make时,它应该打印正在执行的命令(不知道它是否在Mac上执行它),编译命令是什么?它是否包含Qt包含目录的正确路径? – 2011-02-04 16:28:58

+0

您是指“/ usr/bin/qmake”,它是指定为PATH的原因。 – user3111525 2011-02-04 16:55:13

+0

@frankmoss,我在问你在qmake之后运行make时会发生什么(如果你不使用像Qt Creator这样的IDE,通常的编译过程)。但是,我甚至不确定在Mac上有什么类似的东西。我读了一些叫做XCode的东西。所以我不能在这里帮助,因为我不知道使用的构建系统的细节。 – 2011-02-04 18:36:26

回答

2

#include s为头文件。 QtCore不是头文件,它是一个包含头文件的目录。

由于您使用的QDir,第一行改成这样:

#include <QtCore/QDir> 
3

为你写的大多数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. 通过QMAKE再次运行创建从项目文件中生成文件:qmake
  5. 现在你已经生成文件,建立使用该应用程序makenmakegmake,或为您的系统的相应版本。

如果qmake正确地提取了所有内容,现在应该可以使用make构建应用程序。

将新文件添加到项目中时,需要将它们添加到项目文件(*.pro),然后qmake重新运行,但没有任何选项。

0

如果您是Qt的新手,并且没有特殊构建要求(PPC,10.4等),我强烈建议您下载预先包装的Qt SDK您的平台。并使用附带的IDE Qt Creator开始。这会让你的脚快速而不痛苦地湿润。

0

您提供的变量设置,似乎在您的生成文件中,实际上应该在QMake文件xxx.pro中。然后运行qmake,它会从xxx.pro生成Makefile,然后最终可以运行make。 QMake使用变量(如QTSOURCES),以及Qt和您的安装知识来生成正确的makefile。

1

很奇怪你的/ usr/include/* directores不存在。看起来Qt安装有问题。我不明白Mac的具体细节,但从我已经能够发现的,它看起来像-F/Library/Frameworks参数,使传递给G ++应该允许您使用#include <QtCore/QtCore>,而不是仅仅#include <QtCore>。在其他平台(Windows,Linux)上正确安装Qt的情况下,这两种形式同样可以接受。但根据G ++不会对#include <QtXml/QXmlSimpleReader>行抱怨的事实判断,#include <QtModule/ModuleHeader>表单在您的设置中可以正常工作,因此可以将其用作解决方法,前提是没有其他问题。

请注意,我不会推荐以任何形式包含QtCore。它包含了很多其中大部分对您而言可能无用的内容,它只会增加编译时间和名称冲突的可能性。只包括您打算使用的内容,例如#include <QDir>#include <QtCore/QDir>

0

如果在/ usr/include /中找不到QtCore,那么这是一个安装问题。在4.7.0中,我听说有人遇到同样的问题,所以我猜想4.7.0中的mac有一个打包问题。

试着获得4.7.1或建立你自己的来源。