成功实现在Visual Studio 2013中使用MSVC 2015编译器,平台工具集可见(★firecat推荐★)

简介: 成功实现在Visual Studio 2013中使用MSVC 2015编译器,平台工具集可见(★firecat推荐★)

网上大量的博客都是讲述如何在高版本的VS使用低版本的编译器,例如电脑已经安装了VS2017,但是不想安装低版本的VS2015/VS2013/VS2010等,同时又想用低版本的编译器。这类的博客实在太多,方法我就不赘述了。然而我的这篇博客......


是的,你没有看错标题,就是实现在Visual Studio 2013中使用MSVC 2015编译器!即VS低版本使用高版本编译器!


本人的电脑安装了完整版的VS2013,但是没有安装VS2015。如何实现高版本的编译器和调试器呢?以下是实现的过程:


一、安装Microsoft Build Tools 2015


1、Visual Studio的编译引擎是MSBuild,它提供了一套项目文件(.csproj,.vbproj, vcxproj)的XML的Schema,用来指定如何处理和编译项目。MSBuild也是一个MIT License的开源软件,可以在Github上看到它的仓库。


当然MSBuild不依赖于Visual Studio,完全可以在不安装Visual Studio的情况下使用MSBuild。


在链接 https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/,找到了可再发行组件和生成工具:

Microsoft Visual C++ 2015 Redistributable 更新 3

Microsoft 生成工具 2015 更新 3

我们顺序安装。需要注意的一点是,在安装VS2015的生成工具(即MSBuild)的时候,请选择默认安装,默认的是winSDK 8.1。(但是如果想安装MFC的文件和库文件就需要自定义安装。)


visualcppbuildtools_full.exe默认是在线安装,我们也可以设置成离线安装,带上本地磁盘路径:


visualcppbuildtools_full.exe /layout d:\vs2015


安装完成之后,C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0会有V140文件夹。


V120对应的是VS2013;V140对应的是VS2015;

image.png


在系统盘路径下执行DOS命令,可以查看都安装了哪些MSBuild.exe:


C:\>dir /s /b /d  MSBuild.exe


2、关于MSBuild的微软官方文档:


使用命令行中的 MSVC 工具集


https://docs.microsoft.com/zh-cn/cpp/build/building-on-the-command-line


https://docs.microsoft.com/zh-cn/visualstudio/msbuild/msbuild


C/C++ 生成参考


https://docs.microsoft.com/zh-cn/cpp/build/reference/c-cpp-building-reference


3、安装完MSBuild,为什么VC++项目属性页显示的是英文?解决办法请参见我的另一篇博客:


https://blog.csdn.net/libaineu2004/article/details/89599523



二、将自定义工具集成到项目属性


1、新建VS2013 Win32控制台程序,以ConsoleApplication1命名为例:工程建完之后,进入工程所在文件夹,记事本打开(或者直接在工程界面->解决方案->右键菜单->卸载项目->编辑)ConsoleApplication1.vcxproj,修改如下(关注红色字体):


<?xml version="1.0" encoding="utf-8"?>

<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

 <ItemGroup Label="ProjectConfigurations">

   <ProjectConfiguration Include="Debug|Win32">

     <Configuration>Debug</Configuration>

     <Platform>Win32</Platform>

   </ProjectConfiguration>

   <ProjectConfiguration Include="Release|Win32">

     <Configuration>Release</Configuration>

     <Platform>Win32</Platform>

   </ProjectConfiguration>

 </ItemGroup>

 <PropertyGroup Label="Globals">

   <ProjectGuid>{9D4C4AD6-BE26-49CD-90C3-78954404E222}</ProjectGuid>

   <Keyword>Win32Proj</Keyword>

   <RootNamespace>ConsoleApplication1</RootNamespace>

   <VCTargetsPath>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\</VCTargetsPath>


   <TargetPlatformVersion>8.1</TargetPlatformVersion>

   <TargetFrameworkVersion>v4.0.30319</TargetFrameworkVersion>

 </PropertyGroup>

 <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />

 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">

   <ConfigurationType>Application</ConfigurationType>

   <UseDebugLibraries>true</UseDebugLibraries>

   <PlatformToolset>v140</PlatformToolset>

   <CharacterSet>Unicode</CharacterSet>

 </PropertyGroup>

 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">

   <ConfigurationType>Application</ConfigurationType>

   <UseDebugLibraries>false</UseDebugLibraries>

   <PlatformToolset>v140</PlatformToolset>

   <WholeProgramOptimization>true</WholeProgramOptimization>

   <CharacterSet>Unicode</CharacterSet>

 </PropertyGroup>


2、(1)请特别要注意变量VCTargetsPath,它的初始值在注册表有定义,路径是:


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\12.0


VCTargetsPath=$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\V120\'))


默认指向了VS2013的工作路径,这里在*.vcxproj文件里修改为MSVC 2015:


C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\


千万小心,字符串V140后面还有个"\"字符,这个字符可别遗漏了,否则后果不堪设想......


(2) <TargetFrameworkVersion>v4.0.30319</TargetFrameworkVersion>  这句话可有可无


要确保版本号与C:\Windows\Microsoft.NET\Framework\v4.0.30319一致。


修改完毕后,就可以重新打开工程,进行MSVC 2015编译了。如图所示,工程是属性页可以看到平台工具集里面新增了编译器


“Visual Studio 2015(v140)”,其中“未安装”三个字不必理会它,不影响使用。(#^.^#)

image.png



(3)记事本打开ConsoleApplication1.sln文件,修改VisualStudioVersion为:


VisualStudioVersion = 14.0.24720.0


3、由于是VS2013的缘故,点击F7生成解决方案时,仍然会执行VS2013版本的MSBuild.exe,但是请放心,MSBuild最终会调用VS2015的编译器来编译源码。


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\12.0

MSBuildToolsPath = C:\Program Files (x86)\MSBuild\12.0\bin\amd64\


HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSBuild\ToolsVersions\12.0

MSBuildToolsPath = C:\Program Files (x86)\MSBuild\12.0\bin\



三、断点调试


1、由于是VS2013的缘故,点击F5启动调试时,仍然会执行VS2013版本自带的调试器。!囧!这个就没有办法切换成VS2015调试器了。除非放弃使用VS自带的调试器,转而使用WinDbg。本地路径是C:\Program Files (x86)\Windows Kits\8.1\Debuggers。


2、使用VS2013调试2015编译生成的程序,会出现可视化文件*.natvis不匹配的情况,毕竟编译器不同了,比如VS2015在C++ STL方面有较大改进。


VS2013实时调试器(JIT:Just In Time):


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug


HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug


Debugger = "C:\Windows\system32\vsjitdebugger.exe" -p %ld -e %ld


VS2013的调试器路径是:


C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Packages\Debugger


可视化文件在:


C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Packages\Debugger\Visualizers


解决可视化文件*.natvis不匹配的方法请参见我另一篇博客:


https://blog.csdn.net/libaineu2004/article/details/89503132


3、VS调试时,只使用自己带的调试器,不会使用WinDbg。WinDbg可以提供外部使用,安装方法如下:


安装用于程序调试的WinDbg调试器,微软官方把WinDbg调试器隐含到Windows SDK 8.1中了,所以要安装Windows SDK。

下载链接: https://developer.microsoft.com/en-us/windows/downloads/sdk-archive选择Windows 8.1版本安装,注意只需要装Debugging Tools for Windows。

笔者注:我是全部完整地安装了Windows SDK 8.1。


4、关于debugger的微软官网文档:


怎么用调试器


https://docs.microsoft.com/zh-cn/visualstudio/debugger/debugging-in-visual-studio


在 Visual Studio 调试器中指定符号 (.pdb) 和源文件 (C#, C++,Visual Basic 中, F#)


https://docs.microsoft.com/zh-cn/visualstudio/debugger/specify-symbol-dot-pdb-and-source-files-in-the-visual-studio-debugger



image.png


四、附录

-Visual Studio 2010 - #Visual Studio 10
-Visual Studio 2012 - #Visual Studio 11
-Visual Studio 2013 - #Visual Studio 12
-Visual Studio 2015 - #Visual Studio 14
-Visual Studio 2010 - VisualStudioVersion=10
-Visual Studio 2012 - VisualStudioVersion=11
-Visual Studio 2013 - VisualStudioVersion=12
-Visual Studio 2015 - VisualStudioVersion=14
-Visual Studio 2008 - ToolsVersion 3.5
-Visual Studio 2010 - ToolsVersion 4.0
-Visual Studio 2012 - ToolsVersion 4.0
-Visual Studio 2013 - ToolsVersion 12.00
-Visual Studio 2015 - ToolsVersion 14.00


# Visual Studio 14
VisualStudioVersion = 14.0.25420.1
MinimumVisualStudioVersion = 10.0.40219.1
# Visual Studio 12
VisualStudioVersion = 12.0.40629.0
MinimumVisualStudioVersion = 10.0.40219.1

 


相关文章
|
6月前
|
编译器 定位技术 C++
查看Visual Studio软件_MSC_VER值(MSVC编译器版本)的方法
查看Visual Studio软件_MSC_VER值(MSVC编译器版本)的方法
254 1
【C++】CMake中Visual Studio的MSVC版本与PCL版本对应关系
【C++】CMake中Visual Studio的MSVC版本与PCL版本对应关系
295 0
|
Android开发
【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | 使用 Makefile 构建 Android 平台 NDK 应用 )(二)
【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | 使用 Makefile 构建 Android 平台 NDK 应用 )(二)
176 0
【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | 使用 Makefile 构建 Android 平台 NDK 应用 )(二)
|
编译器 Android开发 C++
【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | 使用 Makefile 构建 Android 平台 NDK 应用 )(一)
【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | 使用 Makefile 构建 Android 平台 NDK 应用 )(一)
156 0
【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | 使用 Makefile 构建 Android 平台 NDK 应用 )(一)
|
编译器 数据库 C++
在Visual Studio高版本中使用Qt4,MSVC 2015/2017编译Qt 4.8.7源码
在Visual Studio高版本中使用Qt4,MSVC 2015/2017编译Qt 4.8.7源码
1078 0
在Visual Studio高版本中使用Qt4,MSVC 2015/2017编译Qt 4.8.7源码
|
C# 开发工具 Android开发
Xamarin C# Android for Visual Studio 平台安装
原文:Xamarin C# Android for Visual Studio 平台安装 Xamarin是基于Mono的平台,目前主要有以下产品(更具体请见:http://xamarin.com/products): Xamarin Studio:IDE,是从原来的MonoDevelop改名而来。
1730 0
|
6月前
Visual Studio 2022 中VLD库如何安装
Visual Studio 2022 中VLD库如何安装
733 1
|
6月前
Visual Studio 2022 中VLD库如何安装
Visual Studio 2022 中VLD库如何安装
705 0
|
5月前
|
IDE 开发工具 C语言
Visual Studio 2017 安装及使用(新手)
Visual Studio 2017 安装及使用(新手)
1226 0
下一篇
无影云桌面