首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt moc.exe不生成*.moc文件

Qt moc.exe不生成*.moc文件
EN

Stack Overflow用户
提问于 2009-08-29 12:41:45
回答 5查看 16.5K关注 0票数 5

我正在尝试构建qtestlib/tutorial1 1示例,但是当我运行testqstring.moc (在Windows SP3上运行QT4.5.2)时,不会生成nmake文件。

我将testqstring.cpp从教程目录复制到构建目录(C:\sandboxes\testqstring),并从Qt命令提示符从我的MS 8安装中复制vsvars32.bat文件,以添加VS环境变量。

根据本教程,我应该运行:

代码语言:javascript
复制
> 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\包含“-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 32-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\include\QtCore“-I”-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 32-g++“-o debug\testqstra.o testqstring.cpp”

testqstring.cpp:63:27: testqstring.moc:没有这样的文件或目录

致命错误U1077:'C:\Apps\Qt\2009.03\mingw\bin\g++.EXE‘:返回代码'0x1’停止。

致命错误U1077:'C:\PROGRA~1\MICROS~3\VC\BIN\nmake.exe‘:返回代码'0x2’停止。

因此,我可以看到,moc.exe正在被调用以生成调试/testqstring.moc. but,但从未生成该文件。

感谢您所能提供的一切指导。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-08-29 21:49:02

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

如果要使用MinGW进行构建,则必须使用mingw32-make。如果您想使用MSVC进行构建,则必须使用使用MSVC构建的Qt (这意味着您必须自己构建它或拥有商业许可证)。

票数 4
EN

Stack Overflow用户

发布于 2009-11-29 18:45:51

我的问题是moc.exe没有用nmake生成任何moc文件。原因是Makefile.Debug内部的一个错误的Makefile.Debug路径。

类似于:

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

我将其改为:

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

现在起作用了。;)

不幸的是,qmake将在每次从菜单运行makefile或重新构建/清理解决方案/项目时生成makefile。我认为这是qmake配置中的一个bug。

要永久修复它,您必须找到文件C:\MyQtDir\mkspecs\win32 32-msvc2008\qmake.conf。对于其他的信任,您必须更改win32 32- have 2008。

对我来说是在C:\Qt\2009.03\qt\mkspecs\win32-msvc2008\qmake.conf

搜索短语"QMAKE_MOC“。你会发现一些像这样的线条:

代码语言:javascript
复制
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路径对我来说不会改变,所以我用硬定义的路径名代替了宏:

代码语言:javascript
复制
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不再有问题了。重建也会很好。

希望这会有所帮助;)

票数 2
EN

Stack Overflow用户

发布于 2009-08-29 14:22:21

您试过使用Qt在/mingw/bin中包含的编译器/工具吗?(在我的系统中,Qt安装在C:\Qt\2009.03中。)上次我检查的时候,Qt的非商业发行版将不适用于Visual。我只是在Qt命令提示符下尝试了一下,结果成功了。

代码语言:javascript
复制
qmake -project "CONFIG += qtestlib"

qmake

mingw32-make

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1351350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档