Choosing windows and visual studio version to target both Windows 8 and Windows 7
-
Hello everyone,
first post! Nice to be here :)
I have to compile my existing qt code, targeting these windows versions:
- Windows 8.1 (64 bit)
- Windows Phone 8.1 (64 bit)
- Windows 7 (64 bit)
- Windows 7 (32 bit)
I am willing to buy a visual studio license (I will not use mingw), but will compile from Qt Creator, using my existing .pro files.
I would much prefer to use a Qt 5.4.0 installation without having to compile Qt myself.After researching on qt-project.org, it looks to me as if choosing Windows 8.1 64 bit (pro) and MSVC 2013 SP3 (pro, but express would work too I guess) will allow me to compile for all these platforms.
Question 1: Can anybody confirm this, if only for a subset of these platforms?
My main concern is installing the correct Windows SDKs:
Which Windows SDKs will I require to target all the platforms, and in which order do I have to install them? Do I have to install them before or after installing MSVC 2013 (and its service packs). On "http://doc.qt.io/qt-5/windows-requirements.html#sdks-and-compilers":http://doc.qt.io/qt-5/windows-requirements.html#sdks-and-compilers, only Visual Studio 2012 is mentioned, therefore:- Question 2: Which Windows SDK is required for MSVC 2013 SP3?
- It seems I can also compile for Windows 7 64 bit and Windows 7 32 bit with that:
"http://msdn.microsoft.com/de-de/library/ff770576.aspx":http://msdn.microsoft.com/de-de/library/ff770576.aspx - Question 3: Can anyone confirm this?
A minor concern is this unclear/contradicting documentation:
"http://doc.qt.io/QtSupportedPlatforms/index.html":http://doc.qt.io/QtSupportedPlatforms/index.html- “Windows 8 - 64bit” - is Windows 8.1 64 bit meant here?
** MSVC 2013 - is SP3 meant here? - Windows 8 - 32bit - is this really supported? It is not mentioned on "http://doc.qt.io/qt-5/supported-platforms.html
":http://doc.qt.io/qt-5/supported-platforms.html* - “Windows Phone - arm - Windows 8 host” - is this the same as “Windows Phone 8.1 (64 bit)” from http://doc.qt.io/qt-5/supported-platforms.html ?
** MSVC 2013 - is SP3 meant here?
Question 4: Can anybody shed light on this?
Thank you all,
Chris
-
Hi, welcome to devnet.
If you're going to use Qt Creator then there's no need to buy Visual Studio. All you need is the MSVC compiler, which you can get by downloading the free Visual Studio Express edition. As for the version - go with the most recent one, which at this time is VS2013 with the latest update. There are ready Qt packages for both 32 and 64 bit for that VS version so you don't need to compile Qt yourself.
Whenever Windows 8 is mentioned Windows 8.1 is supported too, as there is not much difference between these from Qt development perspective.
Please don't confuse compiler version with IDE version. There is no MSVC 2013. There is VS2013 which has VC compiler version 12.0. VS2012 has VC 11.0 and only accidentally VS2010 has VC10.0.
Qt is usually built using the latest VS Update available at the time of release so for VS2013 it is Update 4 (they are no longer called SPs).
VS already contains Windows SDK so you don't need separate installation. I'm not sure if that's true for Express edition too in which case you might need to download it separately. The version bundled with VS2013 is v8.1A.
The order of installation is pretty straight forward - VS, VS Updates(if not included), Windows SDK (if needed), Qt, Qt VS add-in (optionally, if you plan to use the VS IDE after all).
Oh, if you're going with the Express edition of VS then you might need to download the Desktop and Windows Phone installations separately. I don't think there's one Express version that handles both platforms. The phone version is called "Express 2013 with Update 4 for Windows" and it targets both phone and WinRT platforms while the desktop version is called "Express 2013 with Update 4 for Windows Desktop".
-
Hi Chris,
thank you for welcoming me and for your quick and very helpful reply. I agree with your recommendation to use VS 2013 with the latest update and will do so.
I still welcome posts here stating that compiling for any of the mentioned target platforms works with that, especially the Windows 7 platforms. I am confident that compiling for Windows 8.1 / Windows Phone 8.1 will work out-of-the-box.Remaining questions:
- In which order do I have to install the Windows 7 SDKs? I am pretty sure at least 1 (older) SDK must be installed before installing VS, but may be mistaken.
- Can I use Visual Studio Express when compiling commercial Qt applications with Qt creator?
- Is Windows 8 - 32 bit really supported?
Thank you!
PS
I am aware of the difference of MS's IDE and compiler numbering. I wanted to be "compatible" to the compiler names given in the mentioned Qt documentation. -
bq. I am aware of the difference of MS’s IDE and compiler numbering. I wanted to be “compatible” to the compiler names given in the mentioned Qt documentation.
Ugh, true, the docs should be fixed here :/
bq. In which order do I have to install the Windows 7 SDKs? I am pretty sure at least 1 (older) SDK must be installed before installing VS, but may be mistaken.
The docs page says to install Windows SDK 7.1 before installing VS. From my own experience I can confirm that these combinations work too:
Installed on Windows 8/8.1x64: VS2013Update4 -> Windows SDK8.1, apps tested to work on Windows 8/8.1
Installed on Windows7x64: VS2010 -> VS Updates -> Windows SDK 8.1, apps tested to work on windows 7x64 and Windows 8x64
Installed on Windows7x64: VS2010 -> VS Updates -> Windows SDK 7.1, apps tested to work on windows 7x64 (my guess is on Win 8 would too but it was long time ago and I updated SDK in the meantime)bq. Can I use Visual Studio Express when compiling commercial Qt applications with Qt creator?
Yes.
bq. Is Windows 8 – 32 bit really supported?
I think what is meant is 32 bit applications that work on Windows 8 64 bit, but I don't see why they wouldn't work on 32bit Windows 8 too (if anybody actually uses that?).
-
The naming of Installation packages is unclear. MSVS2013 for example does not name a compiler, it name development environment.
It would be correct to say "Windows SDK version 6.1" for example because this is what matters for binary compatibility. That said, what SDK was used to create MSVS2013 packages?
-
@_PIB said in Choosing windows and visual studio version to target both Windows 8 and Windows 7:
MSVS2013
Is correct, because each MSVS version uses a dedicated compiler and compiler is what matters for binary compatibility.
So to create MSVS2013 package MSVC++ 12.0 compiler was used.
See "MSVC++ 12.0 _MSC_VER == 1800 (Visual Studio 2013)" in https://en.wikipedia.org/wiki/Microsoft_Visual_C%2B%2B.