Visual Studio中支持的CMake—在2017 15.3 update版本中有哪些更新

[原文发表地址] CMake support in Visual Studio – what’s new in 2017 15.3 update [原文发表时间] 2017/05/10 我们很激动地宣布Visual Studio 2017 15.3 update 的第一个预览版和我们的 Build 2017 大会同一时间发布了。这次的预览版包括两个新功能,使用CMake的开发者都会对这两个功能感兴趣的。。包括开始支持CMake Ninja 生成器和在IDE中CMake CTest的集成。 请下载预览版本并试用最新的CMake功能。如果你刚刚开始使用CMake,可以通过博客 在Visual Studio中学习更多CMake支持功能 进行学习。我们期待你的反馈。 使用Ninja 生成器生成 你们反馈说希望可以支持更多的CMake build 生成器,我们采纳了。Visual Studio最新的预览版本中的CMake tools支持Ninja生成系统。请注意,这是一个预览版本所以还存在一些限制。Visual Studio中的CMake 工具当前只支持x86的生成并且和CTest是不兼容的。另外,Ninja 生成器现在只支持64位的OS。不过不用担心,这些限制都将会在15.3正式发布版本中被解决。 在使用Ninja 生成器之前,你需要编辑CMakeSettings.json 文件。如果你的文件夹中没有CMakeSettings.json文件,你可以右击CMakeLists.txt文件然后选择“更改CMake设置”打开或者创建CMakeSettings.json文件: 如果你的文件夹中还没有添加一个CMakeSettings.json文件,你将看到下面的情形: 如果你想使用Ninja 生成器,你可以在每一个配置里的“generator”设置中选择Ninja 生成器。如果你的文件夹中已经存在CMakeSettings.json文件,你需要将生成器从 “Visual Studio 15 2017”更新到 “Ninja”。注意,这里也仍然不支持x64配置。 在15.3预览版本中,x86的生成是默认选择Ninja 生成器,但是一旦在公开路径发布后这个也将被改变。…

0

将现有的iOS XCode工程迁移到Visual Studio

[原文发表地址] 将现有的iOS XCode工程迁移到Visual Studio [原文发表时间] 2017/4/14 如果你正针对iOS写大量的C++代码,那么你应该考虑一下在Visual Studio中引入你的XCode工程,Visual Studio不仅提供了一种更为简单的方式打开这些工程,如果你需要做一些非C++的修改(例如,storyboarding和UI设计),它还可以在XCode中打开它们。 本文主要介绍如何把现在的XCode工程放在Visual Studio中来运行,你可以阅读一些关于其它类型的C++项目在中的指南Bringing your C++ code to Visual Studio 第一步,安装对iOS支持:确保在VS安装期间,你需要选择“Mobile development with C++”。在自定义窗格中,确保先选择“C++ iOS development tools”选项。 第二步,安装远程 的Mac工具,然后连接VS:在你的Mac机上按照“Install and Configure Tools to Build iOS projects”.里的步骤来安装vcremote, 然后在VS中的 工具 > 选项 > 跨平台 > C++ > iOS中和你的Mac机配对。 第三步,打开XCode导入向导: 文件>新建>从XCode导入,然后完成向导中 的步骤,如果你想了解更多的信息,请阅读“Import a XCode project” in MSDN。 每个XCode对象将会在Visual Studio中创建一个新的工程,您的iOS源代码将可以做进一步的编辑,构建和调试。 第四步(可选),在XCode中打开你的Visual Studio工程。当你需要在你的iOS工程中做一些非C++的修改(例如:StoryBoard编辑),Visual…

0

Visual Studio中的C++ 单元测试

[原文发表地址] C++ Unit Testing in Visual Studio [原文作者] Augustin Popa [原文发表时间] 2017/4/19 测试在一个软件开发流中占有越来越重要的位置。在很多情况下,测试一个程序只是简单运行一下试着做一下就认为参与到了项目之中是远远不够的。在一个结构基点上能够测试代码单独的组件变得更加地必要。如果你是一个C++开发者并且对单元测试很感兴趣,你就需要留意一下Visual Studio的单元测试工具。这篇博客介绍了这个,他只是Visual Studio面向新用户系列的一部分。 这篇博客包含以下内容: 创建单元测试 Microsoft本地C++单元测试框架 在IDE中使用测试资源管理器运行测试 判断单元测试覆盖率 创建单元测试 最简单最有条理的创建单元测试是为你的测试在Visual Studio上创建一个单独的工程。你可以在一个解决方案里创建你想要的多个测试项目,把它们连接到这个解决方案里面的任意数量的包含了你想测试的代码的其他Visual Studio工程上。假设你已经有了一些你要测试的代码,简单地按照如下这些步骤你就可以创建了: 右击你的解决方案,选择添加>新建>工程。点击Visual C++分类,选择测试子类。选择本地单元测试工程,给工程起个名字,然后点击确定。 Visual Studio将创建一个新的包含单元测试的工程,包含所有对本地测试框架的依赖项也已经创建起来。下一步要做的是为任何一个要测试的工程添加参考。右击单元测试工程,选择添加>参考…。 从你的测试工程中勾上任何你想要测试的的工程,然后点击OK. 你的单元测试工程现在可以访问你要测试的工程了。你现在可以编写测试代码了,只要你为你想访问的头文件添加#include声明就可以了。 注意:这个方式你只是能够访问单元测试的公共函数。如果想访问单元测试私有的函数,你必须在被测试代码相同的类里面编写你的单元测试。 Microsoft本地C++ 单元测试框架 你可以使用随着Visual Studio一起发布的本地测试框架编写你的单元测试代码。框架定义了一系列的宏来简化语法。 如果你跟着做了之前的步骤,你现在应该已经有了一个根据你的主要代码创建的单元测试工程。在你的测试工程中打开unittest1.cpp,来看下如下提供的初始代码: 首先,你将注意到依赖项已经被创建到测试框架了,所以你可以开始编写你所需的测试了。假设你已经在之前通过添加>参考把你的测试工程链接到你要测的工程了,你现在就可以简单的为你想要测试的代码的头文件添加#include声明。 测试可以通过使用TEST_CLASS和TEST_METHOD宏而被组织起来,它们将执行你期待的准确的函数。一个TEST_CLASS是有关的TEST_METHOD的一个集合,每一个TEST_METHOD都包含一个测试用例。你可以在括号里面给你的TEST_CLASS和TEST_METHOD起任何你想要的名字。使用使以后能区别标识每一个测试用例或者测试用例集的描述性的名字是个不错的主意。 让我们试着写一些基本的断言。在TODO解释中,写下: Assert::AreEqual(1, 1); 这是一个基本的比较两个表达式相等的断言。第一个表达式表示期待值,第二个表达式表示你要测试的。如果断言通过,两边的结果必须相等。在这个示例中,这个测试用例总是通过的。你也可以测试两个表达式结果不相等的情况,如下: Assert::AreNotEqual(1, 2); 这个,测试用例要通过的话,两个表达式必须不等于相同的结果。当然这种类型的断言是不普遍的,你可能发现它对验证你想避免特殊行为发生的边界值的用例非常有用。 这有一些其他的断言函数你可以尝试。可以看下,简单键入Assert::智能感应提供的整个列表。快速信息提示会出现在你在列表中选择的每一个断言上,在它们的格式和函数上提供更多的内容。你可以在MSDN上面找到整个Microsoft C++ 本地框架的参考功能。 使用测试资源管理器在IDE中运行测试 使用Visual Studio,你没有被限制只能在命令行中运行单元测试。Visual Studio中的测试资源管理器窗口提供了一个简单的接口来运行,调试和并行测试执行。 这是一个简单的过程。只要你把你的测试工程链接到你要测的工程下面,添加#include指向的文件包含你的单元测试代码,写一些断言,你就可以简单的运行整个build。测试资源管理器将发现你所有的单元测试用例并且把它们激活。 注意:在.NET中,有个功能叫Live Unit…

0

Visual Studio中支持的CMake—在2017 15.2 update版本中有哪些更新

[原文发表地址] CMake support in Visual Studio – what’s new in 2017 15.2 update [原文发表时间] 2017/04/17 今天发布的Visual Studio 2017 15.2 update预览版本做出了一些改进,CMake Tools for Visual Studio的新功能—目前也已更新到15.2版本。我们已经更新内置的CMake的版本到3.7.2并在CMake的菜单上增强了相关功能的易见性。这次更新也包括已解决的在community上大家报的一些问题。 请下载这个预览版本并试用CMake功能。如果你刚开始接触CMake,可以点开learn more about CMake support in Visual Studio进行学习。我们期待你的反馈。 CMake 工具更新到了CMake 3.7.2 我们想要让Visual Studio成为在Windows上CMake项目工作的最好途径。为了提高兼容性,我们已经将CMake的内置版本—Visual Studio CMake Tools从3.6版更新到3.7.2版。 CMake 3.7.2带来了许多新功能与改进,关于这部分你可以阅读CMake’s 3.7 release notes。CMake 3.7.2使Visual Studio更加了解你项目的结构并允许Viusal Studio提供更加准确的智能感应和创建。 更加直观的CMake菜单 你们将会在这个版本中注意到最直观的改变是修改的CMake菜单: 此次修改的菜单将所有常见的操作都放在了最上面。在菜单最上面的生成,重新生成,清除和测试所有(如果可用)适用于所有打开文件夹中的CMake项目。下面这些菜单项允许更精准的操作,例如生成单独的目标并进行CMake 缓存的相关操作。现在这个菜单就像是一个CMake的一站式商店,不再像以前所有的相关操作和入口都散落在整个IDE中。 修复的问题和改进 这次15.2 update包括修改了一些客户提出的问题,这些问题大部分都是在community上被反馈的。下面的这些问题已经在这次发布的版本中解决了:…

0

将现有的Android Eclipse项目带到Visual Studio

[原文发表地址] Bring your existing Android Eclipse projects to Visual Studio [原文作者] Marian Luparu[MSFT] [原文发表时间] 2017/4/14 您可以使用Visual Studio开发面向Android的C ++项目. 要了解有关此支持的更多信息,请参阅MSDN上的Visual C ++ for跨平台移动开发部分。 如果您正在使用Eclipse并考虑移动到Visual Studio。您可以通过我们的Eclipse Android项目导入向导来做到这一点。 您可以阅读有关将C ++代码引入Visual Studio的指南中的其他C ++项目类型 第一步:安装Android支持:确保在VS安装的过程中,你选择了“Mobile development with C++” workload. 默认的,它已经包括构建C ++ Android项目所需的所有先决条件。 第二步:安装Eclipse导入向导扩展:从Marketplace安装Java语言服务Android版和Eclipse Android Project导入扩展。 第三步:运行导入向导:启动向导从文件 > 新建 > Eclipse的Android项目并按照说明进行操作。 当向导完成时,您将拥有Eclipse Eclipse项目的C ++部分和Java部分的项目。您可以通过编辑,构建和调试C ++和Java代码来开发您的Android项目。   接下来该干什么 如果您是Visual Studio的新手,通过阅读Visual Studio for…

0

Visual studio中使用C++的Linux 开发

[原文发表地址] Linux development with C++ in Visual Studio [原文作者] Marc Goodner [原文发表时间] 2017/4/11 C++是一门通用语言,在许多领域和许多平台中被应用。Visual Studio 允许你作为一个C++开发者,去开发windows 桌面程序,应用商店程序,Linux,移动开发(Android 和 IOS),而且还有游戏平台,像DirectX,Unreal,Cocos。我们把这些称之为“工作负载”,而且这些应用也可以使用别的程序语言在Visual Studio中开发,比如Python 或者 C#。我们知道C++开发者会选择可以囊括所有这些应用开发平台的开发工具, 这就是Visual Studio 为什么要这么做的原因。在用户数量方面,Visual Studio在Windows平台上一直有着领先的IDE界面,为了C++开发者可以选择任何开发平台,而且这也是因为你们喜欢Visual Studio非常杰出且高质量的编辑环境,具有领先的调试和诊断工具,强大的测试工具,实用的团队协作工具,以及具有能够使用属于自己的编译器和生成系统的功能。 你可以点击上边的任何一个链接去学习Visual Studio中的相关功能。一个美好的开端就是我们可以从“开始使用Visual Studio”得到快速的引导。 在这篇博客中我们将深入研究使用C++的Linux程序开发。 你将会学到以下内容: 如何在安装Visual Studio2017的时候选择这部分的功能 如何创建一个Linux C++ 工程 如何从Visual Studio中建立与一台Linux机器的第一次连接 资源是如何在Visual Studio 和 Linux 之间管理的 Linux 工程系统提供怎么样的功能 如何使用Visual Studio诊断工具去发现和解决问题。 安装C++ Linux 程序开发的工作负载 Visual Studio 2017 引入了C/C++…

0

C++调试和诊断

[原文发表地址] https://blogs.msdn.microsoft.com/vcblog/2017/04/10/c-debugging-and-diagnostics/ [原文作者] Adam Welch (MSFT) [原文发表时间] 2017/4/10   调试是软件开发的基石之一,它可以消耗开发人员一天中的很大一部分。Visual Studio自带的调试器提供了强大的功能和丰富的体验,用于查找和修复出现在你应用程序中的问题,无论什么类型的问题或者有多么难解决。事实上,Visual Studio中有非常多的调试功能和工具,这可能对新用户来说有点复杂。本博客将会让你快速了解Visual Studio自带调试器以及它如何在C ++开发的所有领域中帮助你。   内容目录 断点和流程控制 数据检验和可视化 诊断工具和性能分析 调试过程和策略 多线程调试 编辑并继续 其他资源 断点和流程控制 在你使用Visual Studio构建完你的应用程序后,你就可以通过按F5来启动调试器了。当你启动调试器后,下面这些命令可以帮助你来导航你程序中的断点,以便你控制程序的状态和调试器的当前上下文。这些命令可以让你灵活的控制调试器的作用范围,比如你想调查的某一行或某一个函数。 继续F5:执行到下一个断点 逐过程F10:执行代码的下一行然后停止 逐语句F11:进入当前代码行调用的函数中 跳出Shift+F11:跳出当前函数并停在函数调用后的下一个可执行语句 当鼠标悬停在你代码中的一个断点上时,你将看到两个图标。右边的图标有两个圆圈允许你快速切换当前断点开启或关闭而不用取消这个断点标记: 左边的图标将会启动断点的选项列表。在这里你可以给断点添加条件或者操作。 有时候你想让断点在满足一定条件后被触发,比如当调试器范围内的一个变量x <= 5成立时。使用Visual Studio内置断点设置窗口可以很容易的设置条件断点,断点设置窗口允许你很方便地在源代码查看器中给你的代码直接添加条件断点而不用去申请一个模态窗口。注意,断点图标上出现一个“+”表示至少有一个条件已经被添加到了这个断点上。 这里还有一个叫做断点操作的设置可以在断点中一些操作,例如打印进程ID或者调用堆栈。Visual Studio通常将这些断点中的操作称为“断点追踪”。内置断点设置窗口允许你设置各种各样的断点操作,如打印调用堆栈或PID。注意,当断点中包含至少一个操作时,断点图标会变成菱形。在下面的例子中,我们给断点同时添加了条件和操作,这使得断点图标变成了一个中间带“+”的菱形。 当调试时遇到一个特定的函数时,函数断点(监视点)就会激活。使用调试菜单并选择新建断点来添加一个函数断点。 当调试时遇到一个特定的地址时,数据断点就会启动。使用调试菜单并选择新建断点来添加一个数据断点。   数据检验和可视化 当你停在一个断点上时,调试器就可以访问变量的名字和其当前在内存中的值。这里有几个窗口可以允许你查看这些对象的内容。 局部变量:局部变量窗口会列出当前调试范围内的所有变量,通常包括当前函数到目前为止所有的静态和动态的内存分配。 自动:这个窗口提供了一个源自以下内容的内存中的变量列 设置了断点的当前行 注意在下面的例子中,第79行并没有执行。因为变量没有初始化,所以在自动窗口中没有数值显示。 代码的前三行。如你所见,当我们停在断点所在的79行,前三行的数据都会显示,并且当前行已被检测到等待执行,但是数据必须在本行执行完成后才可见。 监视:这些窗口允许你在调试程序时追踪你感兴趣的变量。列表中的变量只有处在调试范围内才可以查看。 快速监视是被设计用来在以后查看变量内容而不用将变量存储在查看窗口中的。由于这是一个模态对话框,它并不是在整个调试阶段中追踪变量的最好的选择:这种情况下监视窗口是一个更好的选择。 内存窗口:这些提供了更直接的系统内存视图,并且它们不受当前调试器所显示的限制。它们能提供按照位数排列的功能,比如16位,32位和64位。这个窗口的主要目的是为了查看原始格式化的内存内容。查看自定义数据类型是不支持的。 自定义内存视图 Visual Studio提供了一个Natvis框架使你能够自定义非原始的本地数据类型在变量窗口显示(局部变量,自动,监视)。我们将Natvis可视化工具迁移到了类库上,包括Visual C++…

0

Visual Studio Code C/C++ 扩展 2017年四月份更新

[原文发表地址] Visual Studio Code C/C++ extension April 2017 Update [原文作者] RongLu [原文发表时间] 2017/4/25 今天早上我们发布了2017年4月份更新的C/C++ Visual Studio Code扩展。我们怀着激动的心情来介绍这次更新的新功能: 错误曲线 快速信息 跳到声明 Bash在Windows调试中的支持 最初发布的博客中已经更新了这些改变。如果你已经安装了这个扩展,Visual Studio Code会发送一条关于更新的提示并自动为你安装更新。如果你之前没有安装过它,请下载Visual Studio Code C/C++扩展并尝试一下。 错误提示和快速信息 启动功能 在这次的扩展中,我们是把错误提示和快速信息作为“实验功能”发布的。什么意思呢,就是说这两个功能仅仅对于那些使用VSCode Insiders的开发者来说是默认开启的, 对其他人来说默认是关闭的。你可以通过在settings.json文件中(文件->参考->设置)中设置启动或者关闭它。在设置文件中,搜索“intellisense” 定位到C_Cpp.intelliSenseEngine设置,把它设置成”Default“来启动IntelliSense引擎(如下图)。当着这些功能退出他们的实验状态,”Default“将对每个人来说会变成真的默认状态。:) 当默认使用智能感应引擎时,在同一个文件中的“C_Cpp.errorSquiggles”设置允许开启或关闭错误提示功能。 我们鼓励你启动这些功能,尝试一下他们,然后反馈给我们。我们将把这些功能做的更好然后尽快把他们默认为启动的。 错误提示 不久前,我们启动了对#include声明显示错误的提示。如果一个工作站存在的话,这个更新将支持对任何程序的元素显示错误提示,包括变量,关键词,和括号。换句话说,如果打开的是单个的文件,错误提示是不支持的。 例如,在下面的截图中,Vector3出现了红色的下划曲线,表明这个类型不能在指定的include路径中被找到。 单击代码中的Vector3,你将会在左边看到一个小的灯泡。小灯泡上的”Add include path to setting”菜单将带你到“c_cpp_properties.json”文件中,在这个文件中你可以指定智能感应的include路径。如果c_cpp_properties.json 文件不存在,它将会创建一个并且会显示如下默认的include路径: 在Windows上,我们默认的路径是工作站根目录,如果安装了Visual Studio 2017或者2015也可以是VC inlcude的路径。最新的Windows SDK如果找到。 在Linux上, 我们默认的路径是工作站根目录, 最高版本的include可以在/usr/include/c++路径下被找到,包括64位特殊头文件,其他头文件将在usr/lib/clang路径下被找到。 在Mac上,我们默认的路径是工作站根目录, Xcode 默认工具链如果存在或者和Linux一样的路径如果xcode找不到。 你可以添加,移除,或者改变includepath设置的路径来适应你的场景。在这个例子中,我添加了另外一个路径(用红色下划线高亮的)为了智能感应引擎寻找类型。 注意在”浏览“下面有一个新添加的”路径“设置,这个是用来执行模糊查询结果的tag分析的。”includePath”设置,正式地被用于tag分析,目前控制新智能感应引擎的include路径。打开任何现存的c_cpp_properties.json…

0

Visual Studio中的使用C++的DirectX游戏开发

[原文发表地址] DirectX game development with C++ in Visual Studio [原文作者] RongLu [原文发表时间] 2017/4/11 充分利用C++的功能生成高端强大的DirectX游戏,并运行在不同的Windows家族设备上,包含桌面,平板和手机。在这篇博客中我们将深入到Visual Studio中C++的DirectX游戏开发中。首先我们看一下如何获取DirectX桌面和Universal Windows平台(UWP)开发的工具,然后我们将从一个内置的工程模板开始,包括编写DirectX游戏的C++代码和HLSL(高级渲染语言)渲染。然后我们将使用世界级的Visual Studio调试器和Visual Studio DirectX图形调试器和分析器来在代码中捕捉和修复问题。最后,我们来讨论下如何测试的你DirectX游戏和同你的团队成员一起使用Visual Studio。 安装Visual Studio的DirectX开发组件 首先,下载Visual Studio2017并启动Visual Studio 安装器。 为了创建DirectX桌面游戏,选择“移动和游戏”类别下的“使用C++游戏开发”工作负荷。这个工作负荷将提供生成DirectX桌面游戏的核心工具,包括Visual Studio核心编辑器,Visual C++编译器,Windows 通用 C 运行时和Visual Studio调试器。 预选的组件是非常推荐的。其中有两个特别推荐的组件,其他的是可选组件它们对生成DirectX游戏都非常有用: C++ 分析工具:包含DirectX的图形诊断(a.k.a. Visual Studio 图形调试器)和一组对于内存,CPU和GPU的分析工具。默认选择的。 Windows 10 SDKs:最新的Windows 10 SDK是默认选择的。 Windows 8.1 SDK和UCRT(通用C 运行时)SDK. IncreditBuild: 从incredibuild.com安装IncreditBuild, 一个分布式计算的代码生成,数据生成和开发任务的解决方案。 Cocos:从cocos2d-x.org安装Cocos Creator, 生成Cocos2d游戏的编辑器。 Unreal Engine…

0

Vcpkg:引入导出命令

  [原文发表地址] Vcpkg: 引入导出命令 [原文发表时间] 2017/5/12 Vcpkg 帮助你在Windows上获取和构建开源库。自2016年9月以来,开发人员在vcpkg目录里添加了超过200个类库并且积极地投入到代码本身。Vcpkg现在支持Visual Studio2015 和Visual Studio 2017 并且可以定向到动态或静态库和平台,像x64、x86或UWP。 今天我们很高兴地宣布一条新的命令:vcpkg 导出。正如您在我们最近的调查中说得那样,需要一个能够导出用vcpkg构建的二进制代码的命令。这个新命令的目的是允许您与其他想要在他们自己的项目里使用这些文件的开发者分享和重新分配用vcpkg生成的二进制代码。比如,负责企业第三方类库购置的团队可以直接使用vcpkg生成企业项目使用的一组常用的类库二进制代码,然后可以使用vcpkg导出并且与内部开发人员分享这些二进制代码(包括.h、.lib和所有针对这些类库构建的所需要的东西)。 新命令的语法规则是: vcpkg export <pkg1> <pkg2> … — [options] 你可以有多种导出格式的选项: -zip -7zip -nuget -raw(未压缩的文件) 当你指定一个要导出某个包时,其所有的依赖项都会包括在导出文档中。这意味着导出的包可以独立存在 —不需要额外的依赖项。 下面是一些vcpkg导出的演示实例: 导出到nuget > vcpkg export cpprestsdk zlib –nuget The following packages are already built and will be exported: * boost:x86-windows * bzip2:x86-windows cpprestsdk:x86-windows * openssl:x86-windows…

0