2009-08-29 30 views
5
私は のqtestlib/tutorial1の例をビルドしようとしていますが、 nmakeを実行すると のtestqstring.mocファイルが生成されません(Windows XP SP3ではQt 4.5.2を実行しています)。
チュートリアルディレクトリの testqstring.cppを自分のビルドディレクトリ( C:¥sandboxes¥testqstring)にコピーし、QtコマンドプロンプトからVS環境を追加するためにMS Visual Studio 8インストールからvsvars32.batファイルを実行しました変数。

* .mocファイルを生成していないQt moc.exe

チュートリアルによると、私は実行する必要があります:

> qmake -project "CONFIG += qtestlib" 
> qmake 
> nmake 

私が行うと、nmakeからの出力は次のとおりです。

C:/Apps/Qt/2009.03/qt/bin \ MOC .exe -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_TESTLIB_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I ".... \ Apps \ Qt \ 2009.03 \ qt \ include \ QtCore" -I ".... \ Apps \ Qt \ 2009.03 \ QtTest "-I" .... \ Apps \ Qt \ 2009.03 \ qt \には "-I"が含まれています。 " - Qt \ include \ QtGui" -I ".... \ Apps \ Qt \ 2009.03 \ Qt \ include \ ActiveQt" -I "debug" -I ".... \ Apps \ Qt \ 2009.03 \ qt \ mkspecs \ win32-g ++" -D__GNUC__ - DWIN32 testqstring.cpp -o debug \ testqstring.moc

g ++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_TESTLIB_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I ".... \アプリケーション\ Qt \ include \ QtCore "-I" .... \ Apps \ Qt \ 2009.03 \ qt \ include \ QtGui "-I" .... \ Apps \ Qt \ 2009.03 \ qt \ include \ QtTest "-I" .... \ Apps \ Qt \ 2009.03 \ qt \には "-I"が含まれています。 " -I ".... \ Apps \ Qt \ 2009.03 \ Qt \ include \ ActiveQt" -I "debug" -I ".... \ Apps \ Qt \ 2009.03 \ qt \ mkspecs \ win32-g ++" -o debug \ testqstring.o testqstring.cpp

testqstring.cpp:63:27:testqstring.moc:そのようなファイルまたはディレクトリがありません
NMAKE:致命的なエラーU1077: 'C:\ Apps \ Qt \ 2009.03 \ mingw \ bin \ g ++ .EXE ':戻りコード' 0x1 ' 停止。
NMAKE:致命的なエラーU1077: 'C:\ PROGRA〜1 \ MICROS〜3 \ VC \ BIN \ nmake.exe':戻りコード '0x2' 停止します。

したがって、moc.exeがdebug/testqstring.mocを生成するために呼び出されていますが、そのファイルは生成されません。

あなたが提供できるすべてのガイダンスをありがとう。

+0

あなたが最初のコマンドを実行しているときに生成.PROファイルを含めることはできますか? – Ropez

+0

私は同じ問題を抱えていました。しかし、ファイルqt.confを/binディレクトリから削除して解決しました。 –

答えて

4

nmakeを使用してMinGWでビルドを実行しようとしているようです。 nmakeはMSVCツールです。

MinGWでビルドを行う場合は、mingw32-makeを使用する必要があります。MSVCでビルドを行う場合は、MSVCで構築されたQtを使用する必要があります(つまり、自分でビルドするか、商用ライセンスを取得する必要があります)。

+0

ありがとうございます。私はそれが何か簡単だと分かっていました。 mingw32-makeはうまく動作します。 –

0

Ar mocが生成されていないことを確認しますか?これはDebugディレクトリにあるので、 "Debug/teststring.moc"を#includeするか、-idebugコンパイラオプションを#includeする必要があります。

+0

コンパイル行を見ると、既に-I "debug"が含まれていることがわかります。ユーザーは、.proファイルでこれを明示的に行う必要はありません。 – rohanpm

1

/mingw/binにQtに含まれているコンパイラ/ツールを使ってみましたか? (私のシステムでは、QtはC:\ Qt \ 2009.03にインストールされています)。前回チェックしたとき、Qtの非商用配布はVisual Studioでは動作しません。私はちょうどQtのコマンドプロンプトからこれを試して、それは働いた。

qmake -project "CONFIG += qtestlib" 

qmake 

mingw32-make 

希望します。

+0

ありがとう、mingw32-makeはトリックをしました。私はnmakeでうまくいくと思った。チュートリアルでは、makeとnmakeについてのみ触れました。私はMSVCを持っているので、nmakeは正しいツールだと思っていました。明らかに、そうではありませんでした。 –

2

moc.exeがnmakeでmocファイルを生成しなかったという問題がありました。理由は、Makefile.Debugの中に間違ったmoc.exeパスがあります。

のような何か:

C:

C:/Qt/2009.03/qt/binの\ moc.exeが

は、私はそれを変更\ Qtの\ 2009.03 \ qtの\ビン\のMOC .exe

これが機能します。 ;)

残念ながら、qmakeは、メニューから実行するか、ソリューション/プロジェクトを再構築/クリーニングするたびにmakefileを生成します。私はそれがqmake構成のバグだと思う。

ファイルを永続的に修正するには、C:\ MyQtDir \ mkspecs \ win32-msvc2008 \ qmake.confというファイルが必要です。他の設定では、win32-msvc2008を変更する必要があります。それはCにいた私にとっては

:\ Qtの\ 2009.03 \ QT \ mkspecs \ win32の-msvc2008 \フレーズ "QMAKE_MOC" の

検索qmake.conf。

QMAKE_MOC    = $$[QT_INSTALL_BINS]\moc.exe 
QMAKE_UIC    = $$[QT_INSTALL_BINS]\uic.exe 
QMAKE_IDC    = $$[QT_INSTALL_BINS]\idc.exe 

QT_INSTALL_BINS間違っているように思われるパスです:あなたはこのようないくつかの行があります。ディレクトリ区切り文字はまだ '/'ですが、 '\'にする必要があります。現時点では、QT_INSTALL_BINSをどこで変更する必要があるのか​​正確にはわかりません。私はハードに定義されたパス名でマクロを置き換えるように、しかし、qtのパスは私のために変更されません。

QMAKE_MOC    = C:\Qt\2009.03\qt\bin\moc.exe 
QMAKE_UIC    = C:\Qt\2009.03\qt\bin\uic.exe 
QMAKE_IDC    = C:\Qt\2009.03\qt\bin\idc.exe 

は、今はもうMOCには問題はありません。リビルドも正常に動作します。このことができます

希望;)まだVCでコンパイルした場合には

+1

qmakeを実行すると、QT_INSTALL_BINSパスを更新できます。 qmake -set "QT_INSTALL_BINS" "C:\ Qt \ 2009.03 \ qt \ bin" 詳細情報:http://doc.trolltech.com/4.5/qmake-environment-reference.html –