2011-02-04 91 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或建立你自己的來源。