5

我正在尝试构建qtestlib/tutorial1 示例,但运行时未生成testqstring.moc文件nmake(我在 Windows XP SP3 上运行 Qt 4.5.2)。
我将testqstring.cpp从教程目录复制到我的构建目录 ( C:\sandboxes\testqstring ) 并从 Qt 命令提示符运行我的 MS Visual Studio 8 安装中的 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\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\include"-I"." -I"....\Apps\Qt\2009.03\qt\include\ActiveQt" -I"调试" -I"....\Apps\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"....\Apps\Qt\2009.03\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"调试" -I"....\Apps\Qt\2009.03\qt\mkspecs\win32-g++" -o 调试\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,但从未生成该文件。

感谢您提供的任何和所有指导。

4

5 回答 5

4

看起来您正在尝试使用nmakeMinGW 进行构建。 nmake是一个 MSVC 工具。

如果您想使用 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 都会生成生成文件。我认为这是 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

现在moc已经没有问题了。重建也可以正常工作。

希望这可以帮助 ;)

于 2009-11-29T18:45:51.197 回答
1

您是否尝试过在 /mingw/bin 中使用 Qt 附带的编译器/工具?(在我的系统上,Qt 安装在 C:\Qt\2009.03 中。)上次我检查时,Qt 的非商业发行版不适用于 Visual Studio。我刚刚从 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 回答