使用 nmake 为 VS2010 构建 Qt 返回链接错误

Posted

技术标签:

【中文标题】使用 nmake 为 VS2010 构建 Qt 返回链接错误【英文标题】:Building Qt for VS2010 with nmake returns link error 【发布时间】:2012-07-04 13:05:48 【问题描述】:

我正在尝试为 Visual Studio 2010 构建 Qt,我正在按照this post 接受的答案中的说明进行操作

我正在使用修改后的配置命令:

configure.exe -release -no-webkit -no-phonon -no-phonon-backend -no-script -no-scripttools -no-qt3support -no-multimedia -qt-libpng -qt-zlib -qt-libmng -qt-libtiff -qt-libjpeg

效果很好,但是当我启动 nmake 时,它​​最终会失败并返回此错误:

itemviews\qabstractitemview.cpp(2311) : error C2039: 'Key_BackSpace' : is not a member of 'Qt'
itemviews\qabstractitemview.cpp(2311) : error C2065: 'Key_BackSpace' : undeclared identifier
itemviews\qabstractitemview.cpp(2311) : error C2051: case expression not constant

...

Generating Code...
NMAKE : fatal error U1077: '"c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\cl.EXE"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.

我使用的原始命令是前面提到的帖子中使用的命令,但我添加了这些:

-qt-libpng -qt-zlib -qt-libmng -qt-libtiff -qt-libjpeg

并删除了这个:

-no-ltcg

让它正常工作,但 nmake 仍然无法工作。

任何帮助将不胜感激,谢谢

【问题讨论】:

配置命令中没有平台规范?也许在使用 configure.exe 时这不是必需的,但我不确定。 Here 是在我的实验室中从源代码为 VS 2008 和 2010 构建 Qt 的方式。我们没有问题。也许您可以比较该安装过程的注释,看看您的问题出在哪里。 与 Qt 4.6.4 完全相同的错误,VS2008 在 64 位,做一个简单的:配置 -release -static -fast -no-qt3support -no-webkit -no-phonon -no-dbus -no-openssl -platform win32-msvc2008 后跟 nmake。我认为 Qt 4.8.2 也有同样的问题,但我记不太清了。 【参考方案1】:

或者你可以尝试从另一个角度来看待这个错误,比如错字或其他东西。事实上,这个问题种错字错误。尝试将原来的Qt::Key_BackSpace修改为Qt::Key_Backspace,再次修改nmake。我遇到了您在此处发布的问题,并且我确实使用了 comment-out 方式。直到我偶尔看看屏幕下方的键盘...,是的,它是 Backspace 而不是 BackSpace

此外,更具体地说,您可以在以下版本的相同源文件中签出 sn-ps,例如:

Qt 4.7.4:%QTDIR%/src/gui/itemviews/qabstractitemview.cpp(2321):Qt::Key_Backspace

Qt 4.8.1:%QTDIR%/src/gui/itemviews/qabstractitemview.cpp(2337):Qt::Key_Backspace

【讨论】:

这实际上解决了问题,谢谢!这显然比注释掉这个案子要干净得多。这应该是公认的答案:)。 谢谢..修正错字保存我的一天:)【参考方案2】:

绝对是事后的事,但我能够通过在 QT 4.6.4 的第 2311 行注释掉 qabstractitemview.cpp 中的 Qt::Key_BackSpace 案例来解决这个问题。我猜关键定义在补丁或同样愚蠢的东西中被改变了。您可以在 /%My QT Directory%/src/gui/itemviews/qabstractitemview.cpp 中找到该文件。希望这会有所帮助!

【讨论】:

以上是关于使用 nmake 为 VS2010 构建 Qt 返回链接错误的主要内容,如果未能解决你的问题,请参考以下文章

VS2012 nmake使用v110_xp工具集?

使用nmake构建静态版qt

在 Windows 中编译 Qt 时出现致命错误

nmake:是不是可以禁用编译警告?

使用 Visual Studio 构建 qt 项目

为什么在构建静态版本的QT时出现NMAKE错误?