Qt 5 RC1 - don't know how to make qtbase/lib/Qt5Bootstrap.
-
Hi all - having a major problem compiling Qt 5 RC1 using win32-icc.
First of all, I am using the following configuration:
configure -platform win32-icc -developer-build -opensource -nomake tests -nomake examples -debug -no-c++11 -confirm-license -opengl desktop -sse2 -plugin-sql-mysql -I C:\MySQL\include -L C:\MySql\lib -plugin-sql-odbcI am running visual studio 2012 + intel composer 2013 (latest version).
The problem itself occurs when qmake generates the Makefile.Debug/Makefile.Release for qtbase/src/tools/(moc/rcc etc).
NMAKE : fatal error U1073: don't know how to make 'C:\Development\Qt\qtbase\lib
Qt5Bootstrap'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 11.0
\VC\BIN\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.In the makefile, the following is generated which causes the error:
Build rulesfirst: all
all: Makefile.Debug $(DESTDIR_TARGET)$(DESTDIR_TARGET): C:\Development\Qt\qtbase\lib\Qt5Bootstrapd. $(OBJECTS)
$(LINK) $(LFLAGS) /OUT:$(DESTDIR_TARGET) @<<
$(OBJECTS) $(LIBS)Can someone provide some advice as to what may be the problem.
There is a Qt5Bootstrap.lib in C:\Development\Qt\qtbase\lib - however the linker seems to be generating a Qt5Bootstrap.lib rather than Qt5Bootstrapd.lib even though I have specified -debug.
xilib /NOLOGO /OUT:......\lib\Qt5Bootstrap.lib @C:\Users<user>\AppData\Local\Temp\nm8254.tmpBefore configuring I ran nmake distclean... so what could possibly be wrong here? I am out of ideas.
Thanks.
-
Does ICC use nmake by default? Are you sure the toolchain is operational?
Normally bootstrap would not need to be compiled in debug, because it's only used to generate initial core of Qt (qmake, rcc, moc). It is not used later in Qt development or building. But of course, this can also be a bug, in which case it would be great if you reported it on JIRA.
distclean might not clean the source completely in some cases. If it's not too much of a hassle, try building in a clean repo (freshly cloned git or unpacked archive).
But first, just try modifying the Makefile by hand, maybe it will work.
-
Ok - I manually modified the generated makefiles to use Qt5Bootstrap.lib.
Now, I am having another issue occuring when qvariant.cpp compiles (in the configure stage):
error : name followed by "::" must be a class or namespace name
1> template<class C> static Yes test(char (*)[(&C::isNull == 0) + 1]);detected during:
1> instantiation of "QVariantIsNull<Filter>::HasIsNullMethod<T>::test [with Filter=<unnamed>::CoreTypesFilter, T=bool]" based on template argument <bool> at line 225
1> instantiation of class "QVariantIsNull<Filter>::HasIsNullMethod<T> [with Filter=<unnamed>::CoreTypesFilter, T=bool]" at line 230
1> instantiation of class "QVariantIsNull<Filter> [with Filter=<unnamed>::CoreTypesFilter]" at line 127 of "..............\Development\Qt\qtbase\src\corelib\kernel\qvariant.cpp"
1>I'm again not sure why this happens as the class structure surrounding qvariant is quite extensive. Anyone have any suggestions?
UPDATE: Fixed by forcing the C++98 version of HasIsNullMethod.