帮助开始使用Qt

时间:2011-02-04 16:16:42

标签: qt macos

我是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 个答案:

答案 0 :(得分:3)

对于您编写的大多数C ++ Qt应用程序,如何手动编译应用程序并不是很明显。由于许多因素,这很复杂:

  1. 头文件可能根据其版本
  2. 放置在不同的目录中
  3. moc,元对象编译器,需要运行
  4. 需要包含正确版本的DLL
  5. 许多预处理器定义需要到位
  6. 鉴于以上所有内容,最简单的方法是使用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,从项目文件中创建makefile:qmake
    5. 现在您已拥有makefile,使用makenmakegmake或系统的相应make版本构建应用程序。
    6. 如果qmake正确选取了所有内容,您现在应该可以使用make来构建应用程序。

      当您向项目中添加新文件时,需要将它们添加到项目文件(*.pro)中,然后qmake重新运行而不提供任何选项。

答案 1 :(得分:2)

#include用于头文件。 QtCore不是标题,它是包含标题的目录。

由于您正在使用QDir,请将第一行更改为:

#include <QtCore/QDir>

答案 2 :(得分:1)

您的/ usr / include / * directores不存在,这很奇怪。似乎Qt安装有问题。我不了解Mac的具体细节,但从我能够找到的内容来看,传递给G ++的-F/Library/Frameworks参数看起来应该允许您使用#include <QtCore/QtCore>而不仅仅是{{ 1}}。在其他平台(Windows,Linux)上正确的Qt安装中,两种形式都同样可以接受。但是,根据G ++没有抱怨#include <QtCore>行的事实判断,#include <QtXml/QXmlSimpleReader>形式在您的设置中正常工作,因此可以将其用作解决方法,前提是没有其他问题。

请注意,我不建议以任何形式包含QtCore。它包含很多东西,其中大部分可能对你没用,只会增加编译时间和名称冲突的可能性。仅包括您打算使用的内容,例如#include <QtModule/ModuleHeader>#include <QDir>

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

尝试获取4.7.1或从源代码中构建自己的。