【问题标题】:Errors when building Qt 5.6.0 for Visual Studio Community 2015为 Visual Studio Community 2015 构建 Qt 5.6.0 时出错
【发布时间】:2016-08-20 14:41:20
【问题描述】:
我一直在尝试构建 Qt 5.6.0 以用于 Visual Studio 2015 社区,但他们网站和 Qt wiki 上的文档在为 Visual Studio 构建它时并不是很具体。我也尝试过其他教程来构建它,但没有成功。
我尝试过的教程如下:
https://wiki.qt.io/Building_Qt_5_from_Git
https://doc.qt.io/qt-5/windows-building.html
这些是我在尝试构建它时采取的步骤:
将源代码从 git repo 克隆到 D:\Programs\qt5。
检查了我想要的分支。在本例中为 5.6.0。
仅克隆基本模块子集以减少构建时间。
-
创建了一个批处理脚本来设置cmd会话的环境变量,并将其放在D:\Programs\qt5:
REM Set up \Microsoft Visual Studio 2015, where <arch> is \c amd64, \c x86, etc.
CALL "D:\Programs\Visual Studio 2015 Community\VC\vcvarsall.bat" amd64
SET _ROOT=D:\Programs\qt5
SET PATH=%_ROOT%\qtbase\bin;%_ROOT%\gnuwin32\bin;%PATH%
REM Uncomment the below line when using a git checkout of the source repository
SET PATH=%_ROOT%\qtrepotools\bin;%PATH%
SET QMAKESPEC=win32-msvc2015
SET _ROOT=
REM When compiling with ICU, uncomment the lines below and change <icupath> appropriately:
REM SET INCLUDE=<icupath>\include;%INCLUDE%
REM SET LIB=<icupath>\lib;%LIB%
REM SET PATH=<icupath>\lib;%PATH%
*尝试删除 SET QMAKESPEC 行,但不影响产生的错误。
打开 VS2015 的开发人员命令提示符并导航到 D:\Programs\qt5。
运行4号脚本。
-
输入命令来配置 Qt5 构建。
configure -developer-build -opensource -confirm-license -nomake tests -nomake examples -mp -skip qtwebengine -skip qtwebchannel
*有没有办法使用configure命令只构建基本模块子集?
-
输入命令构建 Qt。
nmake
我在尝试构建它时收到此错误:
D:\程序\qt5>nmake
Microsoft (R) 程序维护实用程序版本 14.00.23506.0
版权所有 (C) 微软公司。版权所有。
cd qtbase\ && (如果不存在 Makefile D:\Programs\qt5\qtbase\bin\qmake D:\Programs\qt5\qtbase\qtbase.pro -o Makefile ) && nmake -f Makefile
Microsoft (R) 程序维护实用程序版本 14.00.23506.0
版权所有 (C) 微软公司。版权所有。
cd src\ && (如果不存在 Makefile D:\Programs\qt5\qtbase\bin\qmake D:\Programs\qt5\qtbase\src\src.pro -o Makefile ) && nmake -f Makefile
Microsoft (R) 程序维护实用程序版本 14.00.23506.0
版权所有 (C) 微软公司。版权所有。
cd corelib\ && (如果不存在 Makefile.qtzlib D:\Programs\qt5\qtbase\bin\qmake D:\Programs\qt5\qtbase\src\corelib\qtzlib.pro -o Makefile.qtzlib ) && nmake -f Makefile .qtzlib
Microsoft (R) 程序维护实用程序版本 14.00.23506.0
版权所有 (C) 微软公司。版权所有。
nmake -f Makefile.qtzlib.Debug all
Microsoft (R) 程序维护实用程序版本 14.00.23506.0
版权所有 (C) 微软公司。版权所有。
复制 /y ..\..\lib\Qt5Zlibd.dll ..\..\bin
该系统找不到指定的文件。
nmake -f Makefile.qtzlib. 全部释放
Microsoft (R) 程序维护实用程序版本 14.00.23506.0
版权所有 (C) 微软公司。版权所有。
复制 /y ..\..\lib\Qt5Zlib.dll ..\..\bin
该系统找不到指定的文件。
cd tools\bootstrap\ && (如果不存在 Makefile D:\Programs\qt5\qtbase\bin\qmake D:\Programs\qt5\qtbase\src\tools\bootstrap\bootstrap.pro -o Makefile ) && nmake -f Makefile
Microsoft (R) 程序维护实用程序版本 14.00.23506.0
版权所有 (C) 微软公司。版权所有。
nmake -f Makefile.Debug
Microsoft (R) 程序维护实用程序版本 14.00.23506.0
版权所有 (C) 微软公司。版权所有。
cl -c -nologo -Zc:wchar_t -FS -Zi -MDd -D_HAS_EXCEPTIONS=0 -MP -GR -W3 -w34100 -w34189 -w44996 -WX /Fd..\..\..\lib\Qt5Bootstrapd.pdb - DUNICODE -DWIN32 -DWIN64 -DQT_BOOTSTRAPPED -DQT_LITE_UNICODE -DQT_NO_CAST_TO_ASCII -DQT_NO_CODECS -DQT_NO_DATASTREAM -DQT_NO_LIBRARY -DQT_NO_QOBJECT -DQT_NO_SYSTEMLOCALE -DQT_NO_THREAD -DQT_NO_UNICODETABLES -DQT_NO_USING_NAMESPACE -DQT_NO_DEPRECATED -DQT_NO_TRANSLATION -DQT_CRYPTOGRAPHICHASH_ONLY_SHA1 -DQT_NO_CAST_FROM_ASCII -DQT_BUILD_BOOTSTRAP_LIB -DQT_BUILDING_QT -D_CRT_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER - DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x040800 -DQT_NO_EXCEPTIONS -I。 -I..\..\3rdparty\zlib -I..\..\..\include -I..\..\..\include\QtCore -I..\..\..\include\ QtCore\5.6.1 -I..\..\..\include\QtCore\5.6.1\QtCore -I..\..\..\include\QtXml -I..\..\..\包括\QtXml\5.6.1 -I..\..\..\include\QtXml\5.6.1\QtXml -Itmp -I..\..\..\mkspecs\win32-msvc2013 -Fo.obj\调试\@C:\Users\Justin\AppData\Local\Temp\nm3B49.tmp
qlatincodec.cpp
qtextcodec.cpp
qutfcodec.cpp
d:\programs\qt5\qtbase\include\qtcore\../../src/corelib/global/qflags.h(52): 错误 C2220: 警告视为错误 - 没有生成“对象”文件(编译源文件..\..\corelib\codecs\qlatincodec.cpp)
d:\programs\qt5\qtbase\include\qtcore\../../src/corelib/global/qflags.h(52): 警告 C4577: 'noexcept' 未指定异常处理模式;不保证异常终止。指定/EHsc(编译源文件..\..\corelib\codecs\qlatincodec.cpp)
d:\programs\qt5\qtbase\include\qtcore\../../src/corelib/global/qflags.h(52):注意:为了简化迁移,考虑临时使用 /Wv:18 标志和用于构建时没有警告的编译器版本(编译源文件 ..\..\corelib\codecs\qlatincodec.cpp)
d:\programs\qt5\qtbase\include\qtcore\../../src/corelib/global/qflags.h(52): 错误 C2220: 警告视为错误 - 没有生成“对象”文件(编译源文件..\..\corelib\codecs\qutfcodec.cpp)
d:\programs\qt5\qtbase\include\qtcore\../../src/corelib/global/qflags.h(52): 警告 C4577: 'noexcept' 未指定异常处理模式;不保证异常终止。指定 /EHsc(编译源文件 ..\..\corelib\codecs\qutfcodec.cpp)
d:\programs\qt5\qtbase\include\qtcore\../../src/corelib/global/qflags.h(52):注意:为了简化迁移,考虑临时使用 /Wv:18 标志和用于构建时没有警告的编译器版本(编译源文件 ..\..\corelib\codecs\qutfcodec.cpp)
d:\programs\qt5\qtbase\include\qtcore\../../src/corelib/global/qflags.h(52): 错误 C2220: 警告视为错误 - 没有生成“对象”文件(编译源文件..\..\corelib\codecs\qtextcodec.cpp)
d:\programs\qt5\qtbase\include\qtcore\../../src/corelib/global/qflags.h(52): 警告 C4577: 'noexcept' 未指定异常处理模式;不保证异常终止。指定 /EHsc(编译源文件 ..\..\corelib\codecs\qtextcodec.cpp)
d:\programs\qt5\qtbase\include\qtcore\../../src/corelib/global/qflags.h(52):注意:为了简化迁移,考虑临时使用 /Wv:18 标志和用于构建时没有警告的编译器版本(编译源文件 ..\..\corelib\codecs\qtextcodec.cpp)
NMAKE:致命错误 U1077:'"D:\Programs\Visual Studio 2015 Community\VC\BIN\amd64\cl.EXE"':返回代码 '0x2'
停止。
NMAKE:致命错误 U1077:'"D:\Programs\Visual Studio 2015 Community\VC\BIN\amd64\nmake.EXE"':返回代码 '0x2'
停止。
NMAKE:致命错误 U1077:“cd”:返回代码“0x2”
停止。
NMAKE:致命错误 U1077:“cd”:返回代码“0x2”
停止。
NMAKE:致命错误 U1077:“cd”:返回代码“0x2”
停止。
我已尝试搜索此错误以找到修复方法,但到目前为止,我还无法获得有关它的太多信息。
非常感谢您对此主题的任何帮助,谢谢。
【问题讨论】:
-
SET QMAKESPEC=win32-msvc2013 看起来不对,试试SET QMAKESPEC=win32-msvc2015。或者根本不明确设置 mkspec。 (不完全确定这是否有效,但值得一试)
-
我尝试了您将 QMAKESPEC 设置为 win32-msvc2015 并完全删除该行的建议,但它导致了相同的错误。感谢您的快速回复:) 编辑了原始问题以反映更改。
标签:
qt
compiler-errors
visual-studio-2015
nmake