[Development] qmake vcxproj generator issue

raven-worx Software info at raven-worx.net
Thu Dec 18 09:09:31 CET 2014


>> i am using the command "qmake -tp vc -r" to generate Visual Studio projects.
>> With Qt 5.3 and MSVC2008 this worked flawlessly.
>> But since Qt 5.4 can't be compiled with MSVC2008 anymore i switched to
>> MSVC2013.
>
> What do you mean by "Qt 5.4 can't be compiled with MSVC2008 anymore"?
> Visual Studio 2008 is still a supported toolchain.

According to the issues i encountered during compilation with MSVC2008  
this isn't fully true:

In Qt 5.3.x:

.) MSVC 2008 is missing the C9x headers (stdint.h) which are mandatory  
to compile Webkit module. So i needed to provide them myself.

.) when configuring with "-developer-build" option some tests can't be  
compiled. This is because some intrinsics are only available from MSVC  
2010 onwards. I had to patch "qtbase\src\corelib\arch\qatomic_msvc.h"  
with:

# if _MSC_VER > 1500
#  define Q_ATOMIC_INT16_IS_SUPPORTED
# endif

In Qt 5.4.x:

.) WebEngine module can only be compiled with MSVC 2013. I understand  
that this dependency comes from Chromium itself, so no problem.

.) With Qt 5.4.0 the project libGLESv2 was upgraded with ANGLE 2.1  
sources. Which uses heavily the 'auto' keyword on the one hand and  
'std::unordered_map' on the other hand. From MSVC2010 onwards the  
'auto' keyword has a different meaning than in MSVC2008 (see  
http://msdn.microsoft.com/en-us/library/6k3ybftz%28v=vs.100%29.aspx).  
And the unordered_map is only contained in the std::tr1:: namespace in  
MSVC2008 and was moved to the std:: namespace only in later MSVC  
versions.
So you would need heavy source modifications to make this compile with  
MSVC2008.


>> The command runs without errors and creates the .vcxproj files, so far
>> so good.
>
> And AFAIU you're calling configure, then "qmake -tp vc -r" to create  
> VS project files to build Qt? What is the use case for doing that?
> If this approach worked for 5.3, then you were lucky. Nobody tests  
> this way of building.

This has just economic build and mostly convenience reasons to have Qt  
integrated into Visual Studio.

Guess i was lucky, but since the compilation worked like a charm until  
Qt 5.3 i assumed it was intended to work ;)
But i also noticed yesterday that MSVC2008 has no problem with the  
missing flags and successfully links the 'incompatible' obj files. But  
i have to admit i haven't tried to build an application with it  
afterwards. I can only say that the makefile generated Qt binaries  
work with MSVC2008 but not the ones created from the VCPROJ files  
though.









More information about the Development mailing list