我是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/
答案 0 :(得分:3)
对于您编写的大多数C ++ Qt应用程序,如何手动编译应用程序并不是很明显。由于许多因素,这很复杂:
moc
,元对象编译器,需要运行鉴于以上所有内容,最简单的方法是使用qmake
之类的构建系统,它是Qt,cmake
或其他一些Qt感知的构建系统的原生系统。
对于刚接触Qt的人,我建议qmake
。
这是基本的命令行用法。 Qmake提供了与Visual Studio和XCode的集成,但我不会在这里解决这个问题:
qmake
来为qmake构建项目文件,如下所示:qmake -project "CONFIG+=xml"
。因为你在Mac上,你可能还需要一个-macx
选项,但我自己从未使用过它。至少在过去,qmake不够聪明,无法获取XML依赖关系,因此“CONFIG + = xml”选项会明确地添加它。qmake
make
,nmake
,gmake
或系统的相应make版本构建应用程序。如果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使用QT
和SOURCES
等变量以及Qt和您的安装知识来生成正确的makefile。
答案 5 :(得分:0)
如果在/ usr / include /中没有找到QtCore,那么这是一个安装问题。在4.7.0我听说有人遇到同样的问题,所以我猜在4.7.0中有一个包装问题。
尝试获取4.7.1或从源代码中构建自己的。