質問
私はののqtestlib / tutorial1例を構築しようとしているが、私はnmake
を実行すると、のtestqstring.moc のファイルが生成されていない(私はQtのを実行していますWindowsのXP SP3上の4.5.2)。
私は私のビルドディレクトリ(のC:\サンドボックス\ testqstring の)にチュートリアルディレクトリからのtestqstring.cpp をコピーしたとQtコマンドプロンプトからは、Visual私のMSからvsvars32.batファイルを実行しましたStudio 8のインストールは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」.... \アプリ\ Qtの\ 2009.03 \ qtの\含めます\ QtCore "-I" .... \アプリ\ Qtの\ 2009.03 \ QT \ \ QtGui "-I" .... \アプリ\ Qtの\ 2009.03を含める\ QT \ \ QtTestが含まれる "-I" .... \アプリ\ Qtの\ 2009.03 \ qtの\ "-I" を含みます。」 -I ".... \アプリ\ Qtの\ 2009.03 \ QT \ \ ActiveQtを含める" -I "デバッグ" -I ".... \アプリ\ Qtの\ 2009.03 \ QT \ mkspecs \ win32の-G ++" -D__GNUC__ - DWIN32のtestqstring.cpp -oデバッグの\ 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の\ 2009.03 \ QT \ \ QtCoreが含まれます" -I ".... \アプリ\ Qtの\ 2009.03 \ QT \ \ QtGuiが含まれる" -I ".... \アプリ\ Qtの\ 2009.03 \ QT \ \ QtTestが含まれる" -I」.... \アプリ\ Qtの\ 2009.03 \ qtの\は "-I" を含みます。」 -I -I "デバッグ" -I ".... \アプリ\ Qtの\ 2009.03 \ QT \ mkspecs \ win32の-G ++" -oデバッグ ".... \アプリ\ Qtの\ 2009.03 \ qtの\は\ ActiveQtが含まれます" \ testqstring.o testqstring.cpp
testqstring.cpp:63:27:testqstring.moc:そのようなファイルやディレクトリはありません
NMAKE:致命的なエラーU1077: 'C:\アプリ\ Qtの\ 2009.03 \ mingwのの\ビン\ G ++ EXE。':リターンコード '0x1の' 停止します。
NMAKE:致命的なエラーU1077: 'C:\ PROGRA〜1 \ MICROS〜3 \ VC \ BIN \のNMAKE.EXE':リターンコード '0x2の' 停止します。
だから、私はそのmoc.exeは、デバッグ/ testqstring.mocを生成するために呼び出されているが、そのファイルが生成されることはありません見ることができます。
あなたが提供することができます任意およびすべての指導いただき、ありがとうございます。
解決
nmake
を使用しようとしているように見えます。 nmake
はMSVCツールです。
あなたがmingw32-make
を使用しなければならないのMinGWでビルドを行いたい場合。あなたはMSVCでビルドを行いたい場合、あなたは(あなたがそれを自分で構築したり、商用ライセンスを持っている必要があります意味)MSVCで構築されたのQtを使用する必要があります。
他のヒント
私はmoc.exeがNMAKEで任意のMOC-ファイルが生成されなかった問題を抱えていました。その理由は、Makefile.Debug内部間違っmoc.exeパスだっます。
のような何かます:
C:/Qt/2009.03/qt/bin \ moc.exe
私はそれを変更します:
C:\ Qtの\ 2009.03 \ qtの\ビン\ moc.exe
今では動作します。 ;)
Unfortunallyのqmakeのは毎回あなたがメニューからそれを実行するか、ソリューション/プロジェクトをきれいに/再構築makefileを生成します。私はそれがqmakeの構成のバグだと思います。
\ MyQtDir \ mkspecs \ win32の-msvc2008の\のqmake.conf:永久にそれを修正するには、ファイルCを見つける必要があります。他のconfigsのために、あなたは、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
今MOCに問題はもうありません。再構築は、あまりにも正常に動作します。
この情報がお役に立てば幸い;)
あなたがコンパイラを使用してみました/ツールは、中/ mingwの/ binにはQtに含まれていますか? (私のシステムでは、Qtのは、Cにインストールされます。\ Qtの\ 2009.03)私がチェックした最後の時間、Qtの非商用ディストリビューションは、Visual Studioで動作しません。私はQtのコマンドプロンプトからこれを試してみました、それが働いています。
qmake -project "CONFIG += qtestlib"
qmake
mingw32-make
この情報がお役に立てば幸いです。
あなたは確かMOCは生成されませんArは?あなたは追加の-IDebugコンパイラオプションで「デバッグ/ teststring.moc」またはの#includeを#includeする必要がありますいずれかのように、それは、Debugディレクトリに住んでいます。
は、まだVCでコンパイルする場合は、ここでこのバグを回避する方法がありますNMAKE: http://bugreports.qt-project.org/browse/QTBUG-6470