Visual Studio 2015: how to build ATL projects targeting Visual C++ v120 - c++

I am using Visual Studio 2015 Community Edition.
In VS2015 installer, selecting Common Tools and MFC Components under the Visual C++ node, I am able to build ATL based projects.
Selecting Tools and Windows SDKs, under Windows 8.1 and Windows Phone Tools node, I am able to build MFC projects based on Platform Toolset v120, that is Visual Studio 2013.
Now I would like to build an existing ATL project, relatively large, originally built in Visual Studio 2013.
When I set Platform Toolset = 'v120' in the ATL project, the compiler is unable to find the ATL headers.
Is it possible to install them?
Do I have to install both VS2013 and VS2015?

You do need to install the earlier version of Visual Studio if you want to use its compiler toolchain. You can also open a developer command prompt to select the compiler version and use msbuild to build the target using that specific compiler but you still need to have installed the compiler version you need.

Related

How to install Visual Studio Build Tools 2010 on Visual Studio 2015 Community?

I have a project created on Visual Studio 2010. When I try to run the project on Visual Studio 2015 Community edition I get the error below,
Severity Code Description Project File Line
Error MSB8020 The build tools for Visual Studio 2010 (Platform Toolset = 'v100') cannot be found. To build using the v100 build tools, please install Visual Studio 2010 build tools. Alternatively, you may upgrade to the current Visual Studio tools by selecting the Project menu or right-click the solution, and then selecting "Retarget solution". graphics C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.Cpp.Platform.targets 55
And when I tried to build it with Visual Studio 2015 Build Tools I encountered about 1500+ errors.
Is there any way to make the project work?
If you can't install VS2010, Windows SDK for Windows 7 contains needed compiler tools (v100), you may actually skip installing the SDK itself and install only the compiler tools, headers and libs. Please note, that the compiler included in Windows SDK is the same that VS2010 has, but VS2010 SP1 has a bit newer compiler. If you need that, you'll also need to install Microsoft Visual C++ 2010 Service Pack 1 Compiler Update for the Windows SDK 7.1. But be aware, that if you install these, you may have issues later if you decide to install VS2010, there are bugs in installer that requires you to install components in strict order. Also, if your code uses MFC or ATL you must install VS2010, installing Windows SDK will not be enough.
You either install VS 2010 and build your project, or better yet you upgrade your projects. The VS 2015 custom install options will let you install the v120 Platform Toolset, but not the v110 or v100 Platform Toolsets.
One major change in VS 2015 is that the C++ tools (i.e. v140) are not installed by the Typical installation option. See the Visual C++ Team Blog.
Keep in mind that Visual C++ 2010 used the C++0x Draft Standard, and Visual C++ 2015 meets the C++11 Standard with the exception of Expression SFINAE (which is partly there in Update 1), so quite a bit has changed in the intervening years including some breaking changes. Since you are jumping three major releases at once--and about 10 minor updates--, it can be a bit overwhelming especially working through all the new warnings.
Another thing to keep in mind is that Visual C++ 2010 used the Windows 7.1 SDK, while Visual C++ 2012 or later use the Windows 8.x SDK. There's been a lot of change there too particularly for DirectX development. It's particularly important for Windows desktop apps that you set the _WIN32_WINNT preprocessor define for your target platform as the Windows 8.x SDK does not default to the 'oldest supported platform' like earlier Windows SDKs did. See Using the Windows Headers
VS 2010 and the v100 toolset supports targeting Windows XP and Windows Server 2003. The v140 toolset does not support targeting Windows XP / Server 2003. You have to use v140_xp Platform Toolset instead. See this post for some notes as this means you are again using the Windows 7.1 SDK rather than the Windows 8.x SDK with the _xp toolsets.
See Breaking Changes in Visual C++ 2012, Breaking Changes in Visual C++ 2013, and Breaking Changes in Visual C++ 2015.
See also Support For C++11/14/17 Features (Modern C++), and Where is the DirectX SDK?.
If you need to build the code both with VS 2010 and with VS 2015, then you should create two projects/solution files, one for each. You may also want to read this article for some notes on writing code that can build with multiple Visual C++ toolsets, which again is particularly challenging due to the Windows SDK changes.
VS 2015 supports targeting Windows Vista SP2, Windows 7 SP1, Windows 8.0, Windows 8.1, Windows 10, and optionally Windows XP SP3. It does not support targeting Windows Vista RTM, Windows Vista SP1, or Windows 7 RTM.

Visual Studio c++ download and excecution for new computer with windows 8.1 64bit

I just bought a new computer, with Windows 8.1 64bit installed and wanted to start developing in C++.I am new to Visual Studio, I used to do it with eclipse but suggestions I found in the internet were to prefer Visual Studio.
I tried to download Visual Studio C++ 2008 redistributable package (x64) from here http://www.microsoft.com/en-us/download/details.aspx?id=15336.
But I couldn't find where it was stored in my computer, after searching it with key words. Then I uninstalled it, to install again from scratch.
To uninstall it I opened my control panel and it saw that I have Microsoft Visual C++ 2012 Redistributable (x86) installed already, assuming it comes with the computer I bought, and the date of installation matches this. I can't find though where it is stored so I can't open it.
When downloading Visual Studio 2008, it says I need to uninstall previous Visual Studio versions.
Bottom line:
Should I uninstall the Visual 2012 (x86) that probably came with the computer (which is 64bit)? Or should I use it (and try to find where is it located)?
If I shouldn't use the 2012: Was the 2008 version I tried to install good? (2008 gives an "old" intuition, but just my intuition).
Is there an easy way to find out where the application is located for excecution? Any specific file to look for?
thank you
You want to download thee actual Visual Studio IDE from http://www.visualstudio.com/ . Try downloading the free Community Edition for a start.
The Visual Studio redistributable packages are actually the minimal runtime libraries to run C++ programs that were compiled with visual studio. You got a version installed by default even on fresh computers, otherwise you can't run many programs (they are also included with the IDE).
The redistributables are also often bundled with installers to make sure that others can run your programs.
The VC++ Redistributable packages only include the libraries required to run applications built with the respective version of Visual Studio (for example Microsoft Visual C++ 2012 Redistributable is for Visual Studio 2012).
It does not include any version of Visual Studio.
You could uninstall Microsoft Visual C++ 2012 Redistributable (x86) but however as it was preinstalled on your computer, I imagine that some program pre-installed by the computer manufacturer requires it. It's probably not a good idea to remove that.
So no, it's not a good idea to remove it.
In order to use the 2012 version of Microsoft Visual C++ 2012 Redistributable you should install the vs120 compiler, aka the VC++ compiler that comes with Microsoft Visual Studio 2012.
For developing with Microsoft Visual Studio 2008, using Microsoft Visual C++ 2008 Redistributable is completely fine as it matches the compiler version. However if you want to use the newer 2010, 2012, 2013, and 2015 versions you need to use those respective versions of the Microsoft Visual C++ Redistributable.
If you wish to use an up-to-date version of Visual Studio, try the Visual Studio 2013 Community Edition, or if you're feeling adventurous try the Visual Studio 2015 Release Candidate.
The application you built is always located in the project's directory, under /Debug or /Release, depending on whether you built a debug or release version of the application. If you do not know where your project folder is located you may right-click your project in the File pane and click Open folder in Windows Explorer.

What I need to install to compile for Platform Toolset v100 using Visual Studio 2013?

I've just formatted the PC and have Visual Studio 2013 installed. Now, I would like to compile a Visual Studio 2010 C++ solution without convert it and continue targeting v100 platform toolset.
I get the this error:
error MSB8020: The build tools for Visual Studio 2010 (Platform Toolset = 'v100') cannot be found. To build using the v100 build tools, please install Visual Studio 2010 build tools. Alternatively, you may upgrade to the current Visual Studio tools by selecting the Project menu or right-click the solution, and then selecting "Upgrade Solution...". C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.Cpp.Platform.targets 64 5 TPC30004
and project properties I see that of course I miss the needed toolset.
I can't change the target because cannot force XP users to install the new C++ 2013 re-distributable so probably I should install Visual Studio 2010 to fix the problem, but if possible I would like to avoid it (small SSD at the moment and not much free space).
Are there other options available?
You will need to install the Visual Studio 2010 for that. There is no alternative.
You still can install to a different drive, to keep memory footprint on C: as low as possible.
There's also the option of installing the Windows SDK 7.1, which comes with the same VS2010 Platform Tools in it and is available for free. Unlike the VS2010 Express edition, it also includes the AMD64 (but not the Itanium) version of the tools.

How to generate Visual Studio Solutions for Multi-targetting via CMake?

Visual Studio, as of VS2010, supports the concept of multi-targetting, where a solution can be configured for, and built with, the compiler, libraries and includes of preceding Visual Studio versions. For example, the 2010 IDE can be used to build with the v90 (2008) toolset; in 2012 IDE can be used to build with v90, v100, v110 and v110_xp toolchains, and so on.
The question is this; how to configure a CMake build system, already setup to generate solutions for Visual Studio N to build with the compiler etc of Visual Studio N, to permit building with Visual Studio N-M from within the IDE.
While toolset selection should work merely by -T toolset, the issue is that this then in turn provokes a failure in cmake-2.8/Modules/CMakeTestCXXCompiler.cmake , claiming that the cl.exe is not able to compile a simple program. This is not the case, however, in selecting a toolset within a Visual Studio version e.g. v110_xp in Visual Studio 2012. There seems to be some complication in toolsets across Visual Studio versions, as opposed to toolsets within Visual Studio versions.
Does anyone have concrete experience of CMake in this usecase, in generating solutions for toolsets from preceding versions for use in the IDE of the current version of Visual Studio?
That's covered by the CMake's command-line option -T (toolset selection), available since CMake 2.8.11. The syntax is simple:
cmake ... -T "the string VS uses to identify the toolset" ...
So, for example:
cmake ... -T v90 ...
Note that so far, this option does not have a dedicated widget in the GUI.

Can I use build against the 2008 VS Runtime with VS 2010 and no copy of VS 2008?

It looks like using Visual Studio 2010 it is possible to build against the 2008 runtime, if you have both editions installed: Can I use Visual Studio 2010's C++ compiler with Visual Studio 2008's C++ Runtime Library?
Is it possible to do this using just the free Windows Platform SDKs and VS 2010? Just to stress - installing Visual Studio 2008 is not an option.
Background: I'd like to build a Python module for Python 2.7. I have a copy of Visual Studio 2010, but Python 2.7 (specifically the Python(x,y) distribution) is built using 2008. Rebuilding Python, or rebuilding Python(x,y) is not something I want to get into (there are various other modules I want to use as well). My module needs to link against vendor-supplied libraries built using VS 2008/2010 (I've been given both sets of libraries). I don't own a copy of Visual Studio 2008, and I really don't want to have to buy one.
This MSDN article says that although you can change the platform toolset in the IDE you still need to have the VS2008 binaries installed.
I know you said installing 2008 was not an option but perhaps you can still find the free versions in an old SDK or even the Express version on the Microsoft website.