正如标题所示,ICC显然在从源代码编译Qt 5.4.0时给了我一些问题。在尝试之前,我使用msvc2013和我用于ICC构建的相同源文件的副本(当然没有对ICC构建的mkspecs文件进行静态链接修改)进行了成功的Qt静态构建,并对其进行了测试没有问题。
事实上,它给了我一个编译器没有问题,但现在给我的问题是为什么我来问这个问题的任何形式的帮助。构建日志如下:
C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include\d3d11.h(6050):warning #597: "CD3D11_QUERY_DESC::operator const D3D11_QUERY_DESC &() const" will not be called for implicit or explicit conversions
operator const D3D11_QUERY_DESC&() const { return *this; }
^
C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include\d3d11.h(6384):warning #597: "CD3D11_COUNTER_DESC::operator const D3D11_COUNTER_DESC &() const"
will not be called for implicit or explicit conversions
operator const D3D11_COUNTER_DESC&() const { return *this; }
^
C:\Program Files (x86)\Windows Kits\8.1\include\shared\dxgi1_2.h(1271): error: identifier "DXGI_RGBA" is undefined
_In_ const DXGI_RGBA *pColor) = 0;
^
C:\Program Files (x86)\Windows Kits\8.1\include\shared\dxgi1_2.h(1275): error: identifier "DXGI_RGBA" is undefined
_Out_ DXGI_RGBA *pColor) = 0;
^
../../../3rdparty/angle/src/common/mathutil.h(28): remark #3280: declaration hides member "gl::Vector4::x" (declared at line 30)
Vector4(float x, float y, float z, float w) : x(x), y(y), z(z), w(w) {}
^
../../../3rdparty/angle/src/common/mathutil.h(28): remark #3280: declaration hides member "gl::Vector4::y" (declared at line 31)
Vector4(float x, float y, float z, float w) : x(x), y(y), z(z), w(w) {}
^
../../../3rdparty/angle/src/common/mathutil.h(28): remark #3280: declaration hides member "gl::Vector4::z" (declared at line 32)
Vector4(float x, float y, float z, float w) : x(x), y(y), z(z), w(w) {}
^
../../../3rdparty/angle/src/common/mathutil.h(28): remark #3280: declaration hides member "gl::Vector4::w" (declared at line 33)
Vector4(float x, float y, float z, float w) : x(x), y(y), z(z), w(w) {}
^
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Intel\Composer XE 2015\bin\intel64\icl.EXE"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\BIN\amd64\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.
C:\Qt\Qt5.4.0-Intel\5.4\Src>
前两个警告只是来自一堆警告的几个,看起来几乎就像那些,所以我只是把那两个看到,因为大多数构建过程包括每3秒抛出一个庞大的警告数量,以及每个文件。我认为ICC偏执狂。
让我失望的是,在“标识符未定义”错误之后,构建日志会显示更多警告,所以我不确定这是否是导致构建失败的错误。如果这是问题,任何关于可能导致它的原因以及为什么msvc2013构建都没有挣扎?
构建之间的差异:
ICC,来自Intel x64控制台:
>cd C:\Qt\Qt5.4.0-Intel\5.4\Src
>configure -mp -debug-and-release -angle -nomake tests -nomake examples -prefix C:\Qt\Qt5.4.0-Intel\5.4\ICC_64 -platform win32-icc
>nmake
未修改任何mkspecs文件。
MSVC2013,来自VS x64控制台:
>cd C:\Qt\QtSource\Src
>configure -mp -debug-and-release -static -angle -nomake tests -nomake examples -prefix C:\Qt\Qt5.4.0\5.4\msvc2013_64_opengl -platform win32-msvc2013
>nmake
>nmake -install
修改了win32-msvc2013用于静态构建的qmake.conf。