5

qtestlib / tutorial1の例を作成しようとしていますが、実行時にtestqstring.mocファイルが生成されませんnmake(Windows XPSP3でQt4.5.2を実行しています)。testqstring.cppをチュートリアルディレクトリからビルドディレクトリ(C:\ sandboxes \ testqstring
) にコピーし、QtコマンドプロンプトからMS VisualStudio8インストールからvsvars32.batファイルを実行してVS環境変数を追加しました。

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

> 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 \ q -I ".... \ Apps \ Qt \ 2009.03 \ qt \ include \ QtGui" -I ".... \ Apps \ Qt \ 2009.03 \ qt \ include \ QtTest" -I ".... \ Apps \ Qt \ 2009.03 \ qt \include"-I"。 " -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 ".... \ Apps \ Qt \ 2009.03 \ qt .... \ Apps \ Qt \ 2009.03 \ qt \ include \ QtGui "-I" .... \ Apps \ Qt \ 2009.03 \ qt \ include \ QtTest "-I" .... \ Apps \ Qt \ 2009.03 \ qt \include"-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'停止。

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

あなたが提供できるありとあらゆるガイダンスをありがとう。

4

5 に答える 5

4

nmakeMinGW でビルドするため に使用しようとしているようです。nmakeMSVC ツールです。

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

于 2009-08-29T21:49:02.003 に答える
2

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

何かのようなもの:

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

私はそれを次のように変更します:

C:\Qt\2009.03\qt\bin\moc.exe

そして今それは動作します。;)

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

永久に修正するには、ファイル C:\MyQtDir\mkspecs\win32-msvc2008\qmake.conf を見つける必要があります。他の構成については、win32-msvc2008 を変更する必要があります。

私にとっては C:\Qt\2009.03\qt\mkspecs\win32-msvc2008\qmake.conf にありました

「QMAKE_MOC」という語句を検索します。次のような行がいくつか見つかります。

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

これで、モックに問題はなくなりました。リビルドもうまくいきます。

お役に立てれば ;)

于 2009-11-29T18:45:51.197 に答える
1

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

qmake -project "CONFIG += qtestlib"

qmake

mingw32-make

お役に立てれば。

于 2009-08-29T14:22:21.533 に答える
0

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

于 2009-08-29T13:24:46.223 に答える
0

まだ VC nmake でコンパイルしている場合は、このバグの回避策がここにあります: http://bugreports.qt-project.org/browse/QTBUG-6470

于 2010-03-28T22:45:18.710 に答える