2011-02-04 4 views
1

私はQTのnewbyであり、仕事の開始例を得ることさえできません。問題は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 version 2.01a 
Using Qt version 4.7.0 in /Library/Frameworks 

私は、Mac 10.6.6 を使用しています任意の返信が理解されるであろう。

は、私が実行している場合は/ usr/binに/ qmakeの qmakeの-vこれが印刷されているパスとqmakeのパスをチェック。メイクから

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インクルードディレクトリへの正しいパスが含まれていますか? –

+0

"/ usr/bin/qmake"を参照していますが、PATHとして指定されています。 – user3111525

+0

@frankmoss、私はqmake(Qt CreatorのようなIDEを使用しない場合、通常のコンパイル手順)の後にmakeを実行すると何が起こるかを尋ねていました。しかし、私はMac上にmakeのようなものがあるかどうかはわかりません。代わりにXCodeというものがあります。だから私はここで本当に役立つことはできません、私は使用されたビルドシステムの詳細を知らない。 –

答えて

2

#includeのヘッダファイルのためのものです。 QtCoreはヘッダーではなく、ヘッダーを含むディレクトリです。

あなたはQDirを使用しているので、これを最初の行を変更:あなたが書いた最もC++ Qtアプリケーションの場合

#include <QtCore/QDir> 
+1

まず、qmakeがインクルードディレクトリのリストに/ path/to/QtCoreを追加するので、 '#include 'です。第2に、QtCoreディレクトリにQtCoreインクルードファイルがあります。すべてのQtCoreヘッダーが含まれているため、実際には使用することをお勧めしませんが、 '#include 'は動作するはずです。 –

+0

それはまさにセルゲイの場合です。なぜそれは自動的にそれを含んでいないのですか?プロジェクトファイルで質問を編集しました。包括的な答えをいただきありがとうございます。 – user3111525

3

を、それが手でアプリケーションをコンパイルする方法をすぐに明らかではありません。ヘッダファイルはそのバージョン

  • mocに応じて異なるディレクトリに置かれ、メタオブジェクトコンパイラ、
  • の正しいバージョンを実行する必要がありますすることができる

    1. :これは、多くの要因によって複雑になりますDLLは上記のすべてを考慮する

  • 場所に、プリプロセッサの数はする必要が定義
  • 含まれる必要がある、それがのようなビルドシステムを使用するのが最も簡単です(Qtのネイティブ)、cmake、またはQtを認識している他のビルドシステム。

    Qtを初めてお使いの方には、qmakeをお勧めします。

    ここでは、基本的なコマンドラインの使用方法を示します。 qmakeのは、Visual StudioとXCodeの両方との統合を提供しますが、私はここにいることに対処しません。

    1. はqmakeのためのプロジェクトファイルをビルドし、あなたが
    2. が必要と考えているものは何でもファイルをプロジェクト
    3. 書き込み用のディレクトリを作成します。あなたのプロジェクトでを次のように実行してください:qmake -project "CONFIG+=xml"。あなたはMac上にいるので、-macxオプションが必要な場合もありますが、自分で使ったことはありません。少なくとも以前は、qmakeはXML依存性を拾うほどスマートではなかったので、 "CONFIG + = xml"オプションはそれを明示的に追加します。
    4. 再びqmakeのを実行して、プロジェクトファイルからmakefileを作成します:qmake
    5. 今、あなたがメイクファイルを持っていることを、makenmakegmake、またはお使いのシステムのためのメイクの対応するバージョンを使用してアプリケーションを構築します。

    すべてがqmakeによって正しく選択された場合、makeを使用してアプリケーションをビルドできるようになります。

    プロジェクトに新しいファイルを追加するときは、プロジェクトファイル(*.pro)に追加してから、オプションなしでqmakeを再実行する必要があります。

  • +0

    しかし、なぜ私の友人のコンピュータで動作し、私のものではないのですか?私たちは同じ種類のセットアップを持っています。私はQt SDKを使用しています。でも、箱から出てくるはずのサンプルプロジェクトを開くと、同じことが起こります。 – user3111525

    +0

    追加の出力を提供するか、いくつかのことを確認する必要があります。 QtCoreディレクトリとインクルードファイルは存在しますか?アクセス権がありますか?完全なコンパイルコマンドとエラーメッセージは何ですか? –

    +0

    さて、私はQtCreatorがパスを修正すると思います。私は単にQtCreatorの "Build All"ボタンを使用しています。パスで判断してqmakeを使用していると思います。 – user3111525

    0

    Qtを初めてお使いで、特別なビルド要件(PPC、10.4など)がない場合は、プラットフォームのQt SDKを事前にダウンロードすることを強くお勧めします。付属のIDE、Qt Creatorを使用して起動します。それはあなたの足を速く痛みを少なくするでしょう。

    +0

    QtCreatorを使用しました。 – user3111525

    0

    あなたが設定した変数の設定は、実際にはQMakeファイルxxx.proにあるはずです。その後、を実行し、Makefilexxx.proから生成し、最後にmakeを実行することができます。 QMakeは、QTSOURCESのような変数とQtの知識とインストールを使用して正しいmakefileを生成します。

    +0

    あなたが参照している出力はxxx.proからです。 – user3111525

    1

    あなたの/ usr/include/*指示が存在しないことはむしろ奇妙です。 Qtのインストールに何か問題があるようです。私はMacの仕様を理解していませんが、私が知ることができたところから、-F/Library/FrameworksのようなG ++へのパスは、#include <QtCore>の代わりに#include <QtCore/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のマックのパッケージ問題があると思います。

    4.7.1を取得するか、ソースから自分自身を構築してください。