Visual Studio开始支持CMake – 集成了测试浏览器,CMake 3.10

[原文发表地址] CMake Support in Visual Studio – Test Explorer Integration, CMake 3.10 [原文发表时间] 2018/01/10 我们很高兴在Visual Studio 2017 15.6 Preview 2 版本 中更新了一些新的CMake功能。在最新的预览版本中,我们改进了CTest功能与IDE的集成,包括对Google和Boost单元测试框架的各种支持。 如果你刚开始在Visual Studio中使用CMake,请查看如何开始。 CTest在Test Explorer 中支持 Google Test 和Boost.Test 自从支持了CTest的基本功能之后,我们收到的更频繁相关反馈就是Test Explorer集成。 我很高兴地宣布CTest已经完全集成到最新的Visual Studio预览版的IDE中: 通常,CMake项目中的每个CTest都将在Test Explorer中有一个条目。但是,如果仔细观察上面的截图,你可能会注意到测试更加突出。如果你的项目将Google Test或Boost.Test框架与CTest结合使用,则单个测试将在测试浏览器中列出。 对Google Test和Boost.Test的各种支持需要安装相应的测试适配器。 Google和Boost测试适配器现在包含在Visual Studio中,只要安装了C ++工作负载就会默认安装。但是,如果要升级Visual Studio的现有安装,则可能需要手动安装它们。关注更多信息,请查看如何为Google Test和Boost.Test安装测试适配器。 CTest的测试浏览器集成在没有这些适配器的情况下仍然可用,但是对个别CTest可能有限。 所有Visual Studio的测试功能现在都可以与CTest一起使用。除了可以从测试浏览器窗口查看和运行CTest之外,你还可以调试它们并计算代码覆盖率。如果你使用Google Test或Boost.Test单元测试框架,你还将获得有关失败测试(包括堆栈跟踪)的详细信息: 如果你的测试似乎从测试资源管理器中丢失,请确保你已经构建了包含它们的目标。 构建完成后就会自动检测你的测试。 CMake工具升级到 3.10 为了确保你能够使用CMake的最新功能,我们已经将Visual Studio兼容的CMake版本从3.9升级到了3.10。 你可以在CMake 3.10发行说明中找到完整的增强列表。…

0

Image Watch现在可用于Visual Studio 2017

[原文发表地址] Image Watch is now available for Visual Studio 2017 [原文发表时间] 2017/12/14 Image Watch是一个Visual Studio的扩展,它在调试本机C++代码时提供了查看内存位图的监视窗口。它内置了对OpenCV图像类型的支持(例如:CV::Mat,CV::Mat_<>,etc.)。 我们知道,对于你们中的许多人来说,这是C++调试体验的重要组成部分。我们通过调查回复,博客评论以及Reddit网站的讨论收到很多请求希望Visual Studio 2017支持这个扩展。 我们很高兴地宣布Visual Studio 2017的Image Watch现在可以在Visual Studio Marketplace 中下载。 开始使用 OpenCV 和Image Watch 你可以尝试任何OpenCV程序的图像监视。你将需要在你的开发计算机上安装OpenCV库,以便能够编译这些程序。你可以运行以下vcpkg命令来下载并在你的机器上编译OpenCV: 1. 安装vcpkg(如果你已经有可用的vcpkg安装,则跳过): git clone https://github.com/Microsoft/vcpkg.git cd vcpkg .\bootstrap-vcpkg.bat vcpkg integrate install 2. 安装 OpenCV vcpkg install opencv 如果你正在寻找一个OpenCV开始的地方,你可以使用opencv.org上Image Watch教程中提供的例子。通过选择Windows控制台应用程序模板,从文件–>新建–>项目–>Visual C++–>Windows桌面创建一个新的C++项目。然后,用上面链接的OpenCV.org示例替换C++源文件的内容。 在任何C++调试会话期间,你可以通过选择以下命令来调出Image Watch窗口: 查看>其他窗口> 图像监视菜单或 自动,监视或本地窗口>🔍旁边的任何支持的变量…

0

C++ 静态分析在Visual Studio 15.6 预览2 版本上的提高

[原文发表地址]:C++ Static Analysis Improvements for Visual Studio 2017 15.6 Preview 2 [原文作者] :凯尔里德  [原文发表时间] :2018年1月10号 对于C++ 静态分析功能我们有了一些改变,可以更快并且更容易地使用它。行为稍微改变,菜单也移动了一点,但是我们认为这个新的体验更加快速和便捷。让我们来快速了解一下这些改变。 单个文件分析 开发者在处理代码时趋向于关注一些文件。为了使你正在编辑的文件更容易地得到分析的结果,你可以对这个文件运行代码分析。这不需要你去重新生成整个项目。在修复分析警告的时候,我们认为它特别有用,因为它可以更方便的检查和重查这个文件。在分析运行之后,所有这个文件的分析警告将会出现在错误列表窗口。 如果你有一些想要检查的文件,你也来可以在解决方案管理器里选择多个文件,然后仅对这些文件运行代码分析。 更多的协助菜单 为了更容易的找到代码分析菜单,我们将使它与它们的“构建”更加对应一致。在之前的版本中,你可以在项目的“项目仅”菜单下找到代码运行分析菜单。现在这个开始分析的菜单在解决方案,项目或者一个文件的“生成”菜单的“生成X”的对话框附近。在解决方案的上下文菜单 ,在解决方案,项目,和文件的树节点下找到“分析”菜单。 生成菜单   上下文菜单   仅分析 我们从开发者那里听到运行代码分析花费的时间太长了。在之前的版本中,分析运行之前运行代码分析需要一个完整的构建和链接。现在当你运行代码分析的时候,我们不在生成代码或者进行链接。这明显地减少了分析运行的时间。 一方面的影响是你将不再看到生成的警告在分析运行的时候。在生成过程中得到的是生成的警告,在分析运行的时候得到的是代码分析运行的警告。如果你想同时看到生成和分析的警告,请在项目属性下检查“启用代码分析生成“框,然后重新生成你的项目。 C++ 核心规则检查          C++核心检查默认下是没有启用的。如果你想试着使用C++核心检查对单个的文件分析,首先必须启用项目下的扩展。 总结 这有一些简单的调整去提高C++代码分析体验。下载最新的Visual Studio 预览版,然后尝试一下。我们希望你可以感觉它在你的项目中更容易使用并且这个工具可以帮助你编辑更安全的现代C++代码。 总之,我们欢迎你的反馈。可以通过e-mail visualcpp@microsoft.com,Twitter Twitter @visualc 或者facebook Microsoft Visual Cpp上发送任何的评论。        如果你遇到了其他的问题在使用VS2017 MSVC的过程中,请通过报告问题选项通过安装程序或Visual Studio IDE本身告知我们。可以在UserVoice 上提出你的建议让我们知道。谢谢! 编程愉快。

0

Boost.Test单元测试:动态库支持和新项目模板

[原文发表地址] Boost.Test Unit Testing: Dynamic Library support and New Item Template [原文发表时间] 1/10/2018 如果您刚开始学习更多关于C ++单元测试的知识,请查看我们的指南。 我们很高兴地宣布,除了Boost.Test静态库支持,Visual Studio 2017 15.6 Preview 2现在提供了Boost.Test动态库支持和一个Boost.Test项目模板。 这意味着现在比以前更容易将Boost.Test单元测试集成到Visual Studio项目中。 Boost.Test动态库 如果您已经在使用Boost.Test动态库,则您的单元测试将立即受支持。 如果你的机器上还没有Boost.Test,获取Boost.Test动态库的最简单方法是通过vcpkg。 使用vcpkg,只需运行以下命令来安装Boost.Test,然后使其可用于所有VS项目。 我们只需要安装Boost的Boost.Test部分,但是如果您想要获得整个Boost,只需将“boost-test”替换为“boost”即可。 就这样。 现在,您可以使用Visual Studio中的Boost.Test框架无缝编写,发现和运行单元测试。 如果您不喜欢动态库,请参考本指南以使用Boost静态库。 Boost.Test项目模板 如果你的 Visual Studio 拥有Boost.Test 的集成,我们添加了一个项目模板,以便您可以快速将单元测试添加到您的项目中。 为此,请右键单击该项目,然后选择Add> New Item …> Visual C ++> Test> Boost.Test 这会自动创建一个.cpp文件,并带有一些占位符测试,这些测试将自动着色。 构建你的项目后,你可以在测试浏览器窗口中管理你的测试。 项目模板使用Boost.Test的单个头文件变量,但您可以修改路径以使用独立库变体。 随时了解更多关于Boost.Test的变型。 和我们交谈 我们一直在努力为您提供最佳的开发体验。 让我们知道你接下来想看什么。 如果遇到任何问题,请将其提交给Boost.Test…

0

Visual Studio 2017 提高 C++ 核心检查

[原文发表地址]: C++ Core Check improvements in Visual Studio 2017 15.5 [原文发表时间]: 2017年11月15日,[作者]: Sergiy OryeKhov  对于本机代码静态分析工具,我们已经在Visual Studio 2017 15.5 预览版 4上进行了C++ 核心准则检查 扩展。自从15.3 以来大部分工作都集中在新的规则,这将帮助开发者开始编写安全的C++新项目,而那些使用旧版开发的项目可以被移去更安全的现代C++。对于刚开始使用核心准则的人,我们建议您去查看工作草案的最新版本:“C++ 核心准则检查”。 这篇文章是关于在VS2017 15.5 上改变的概述。有关当前发布版的更多信息,请参阅docs.microsoft.com 上受支持的规则集列表。          注意docs.microsoft.com上的一些链接还尚未解决。不是所有的官方的文档都是为这个话题编写的。 新的规则集          在之前的发布版本中我们引入几个新的规则集以允许客户可以缩减代码分析结果。对15.5 这个规则的实施扩展了一些已经存在的规则集(原始指针,所有者指针,唯一指针,类型),也引入了一些新的类目: 类规则:本节包含了一些主要关注使用特殊方法和虚拟规范的规则。这是一个为类和类层次检查建议的一个子集。 并行规则:这当前包含一个单一的规则,可以捕获严重的声明守卫对象。更多的信息请参照 C++ 核心准则中相关的并行规则。 声明规则:这是一组来自接口准则的规则,这关注的是如何声明一个全局的变量。 函数规则:这两个检查有助于采用noexpect 说明符。这是清晰的功能设计和执行准则的一部分。 共享指针规则:作为资源管理准则执行的一部分,我们添加了一些特定的用于如何将共享指针传递到函数或者本地使用的规则。 风格规则:在这次发布中我们有一个简单但是很重要的检查就是禁止使用goto。这是在C++中提高代码风格和表达式与语句使用的第一步。尽管这是被期待的在C++ 核心准则下的goto语句,正确使用这个结构是罕见的,他值得去审查。 每一套新规则 类规则 C26432 DEFINE_OR_DELETE_SPECIAL_OPS 特殊的操作(例如:析构函数和拷贝构造函数)意味着特殊的行为,并且应该全套的定义这种行为。 C26436 NEED_VIRTUAL_DTOR 虚拟方法有一种多态的行为,这需要对对行清理进行更细致的管理。 C26434 DONT_HIDE_METHODS通过名称隐藏方法就像隐藏变量一样。名称不应该出现歧义。 并行规则 C26441…

0

Visual Studio构建工具现在包括VS2017和VS2015 MSVC工具集

[原文发表地址] Visual Studio Build Tools now include the VS2017 and VS2015 MSVC Toolsets [原文发表时间] 2017/11/01 从两年前我们推出 Visual C ++ 构建工具以来,它已经取得了巨大的成功。 C ++构建工具最初是作为一个独立的安装程序发布的,在不安装Visual Studio IDE的情况下,只安装了构建C ++项目所需的工具。 许多开发人员发现它们在不需要完全VS安装的环境中很有用(如构建服务器或CI系统)。 这些工具始终保持最新状态,仅提供最新支持的MSVC编译器工具集版本。 使用Visual Studio 2017的全新灵活的安装程序,我们能够移除我们定制的C ++ 构建工具设置来使用新的VS 2017安装体验。 正如我们在VS2015中所做的那样,我们更新了Build Tools中的MSVC编译器工具集以匹配VS 2017 v141编译器工具集。 Visual Studio构建工具中的MSVC编译器工具集目前具有VS2017 15.3版本中的所有C ++ 17功能和STL修补程序。 当我们发布预览版本的VS2017 15.5版时,我们将再次更新Visual Studio Build Tools中的MSVC编译器工具集。  您可以立即从visualstudio.com下载Visual Studio构建工具。 构建工具被许可作为您现有的Visual Studio许可证的补充,因此没有额外的成本将它们集成到您的工作流程中。 安装VS2015 MSVC v140工具集 你们很多人都告诉我们,你们仍然需要Visual…

0

Visual Studio 支持CMake–导入你的CMake Cache

[原文发表地址] CMake Support in Visual Studio – Import Your CMake Cache [原文发表时间] 2017/11/01 配置一个CMake项目,然后用你想要的方式来创建往往是一个耗时的过程,因此在Visual Studio 2017 15.5 preview中我们是这个过程比以往更加地容易,现在你可以把现有的CMake项目和缓存配置导入到IDE中。现在你可以导入一个现有的CMakeCache.txt文件,Visual Studio也会自动地提取自定义变量并给予它们创建一个预先生成的CMakeSettings.json文件。 请检查预览版本并试用最新的CMake功能。如果你才刚开始接触CMake,请先查阅这篇博客CMake support in Visual Studio。我们期待你的反馈。 导入一个CMake项目 现在我们填加了一个新的入口选项来打开CMake文件:文件->打开->CMake。通过这种方式你可以直接打开一个CMake项目(通过选择一个CMakeLists.txt文件)或是导入一个CMake Cache(通过选择一个CMakeCache.txt文件): 导航到CMakeCache.txt文件的激活导入向导页面: 当你导入了一个CMake Cache,我们会把原始的缓存保持原样。因此,该缓存应该从命令行或使用任何工具或IDE来生成它。 Visual Studio提取了用于创建缓存的命令行参数(如CMake变量)并将其存储在项目的根路径CMakeLists.txt边上的CMakeSettings.json文件中。然后,这个文件可以用来生成一个新的缓存,Visual Studio将使用这个新缓存来创建项目。 请记住,并非缓存中的所有内容都将被导入。诸如生成器和编译器位置之类的属性被替换为已知可用于IDE的默认值。 你的反馈是确保我们提供最佳CMake体验的关键部分。我们很想知道Visual Studio 2017 15.5 preview如何为你工作。如果你有任何特定于CMake工具的反馈,请联系cmake@microsoft.com。对于普通的问题请填写反馈。

0

使用Visual C++和Open Folder自定义您的环境

[原文发表地址] Customizing your Environment with Visual C++ and Open Folder [原文发表时间] 2017/11/02 自从我们支持了打开C ++代码文件夹的功能之后,社区的客户一直希望有更多地可以控制构建和编辑环境的功能。为实现这些想法,我们在Visual Studio 2017的最新版本中增加了一些新的方法可以通过使用CppProperties.json来自定义您的环境。 这个新的自定义界面使您能够使用更广泛的工具,编写更简洁的CppProperties文件,并且具有与MSBuild类似的强大的单个配置的自定义。下面的主题展示了原始C++ Open Folder文章中描述的几个概念。如果您不熟悉编辑CppProperties.json,Launch.vs.json和Tasks.vs.json,可能需要先阅读该文章。 C++ Open Folder这篇文章与我们之前发布的为CMake项目自定义您的环境相匹配,所以如果您已经阅读过了,可能会发现其中有一些内容是相似的,因为我们努力保持经验一致。而最重要的区别在于“关于Launch.vs.json和Tasks.vs.json”如何使用特定于配置的变量。 CppProperties.json的新功能 这种新的灵活性的核心在于您的项目的CppProperties.json文件,它源于两个新的概念: 使用“inheritEnvironments”属性来继承单个配置或一组默认全局环境变量的能力。 通过定义“environments”块来定义单个配置或是自定义环境变量及其值的能力。 通过使用“$ {env.VAR}”语法将这些新概念与CppProperties.json,launch.vs.json和tasks.vs.json中现有的使用环境变量的能力相结合,为创建丰富的开发环境提供了强大的机制。 我们先来看看如何使用此功能的快速示例: 1{ 2 // The “environments” property is an array of key value pairs of the form 3 // { “EnvVar1”: “Value1”, “EnvVar2”: “Value2” } 4 “environments”:…

0

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

[原文发表地址] Visual Studio Code C/C++ extension October 2017 update [原文发表时间] 2017/10/20 昨天我们发布了2017年10月的Visual Studio Code C / C ++扩展的更新。根据上个月发布的Lightbulb的智能感知包含路径功能的建议,我们正在添加另一个功能让智能感应设置更容易——支持compile_commands.json文件,无需手动配置includes和defines。此外,此更新还引入了新的UI来显示智能感应得解析状态。 Compile_commands.json为智能感应提供includes和defines的相关信息 compile_commands.json文件由一系列“命令对象”组成的编译数据库,其中每个命令对象指定了一种在项目中编译翻译单元的方法。 它的格式会在Clang文档中被指定,可以由许多构建系统自动生成,包括CMake和Ninja。当智能感知引擎设置为“Default”时,如果c_cpp_properties.json文件的“compileCommands”属性中指定了compile_commands.json,它将先从compile_commands.json文件中读取includes和defines来启动智能感应功能。 如果解析失败,智能感知引擎将会回退然后读取c_cpp_properties.json文件,从文件中的“includePath”属性中使用include路径,从“defines”属性中读取defines。 尝试使用基于编译器的智能感知 请注意,compile_commands.json文件仅仅在您启用了新的基于编译器的引擎时被支持。这样您将获得改善,对于多个智能感应的功能会获取更加准确的结果,包括类/结构/命名空间成员的自动完成建议,快速信息工具提示,错误曲线,高亮引用和参数提示。在您的settings.json文件中,通过更改“C_Cpp.intelliSenseEngine”属性, 从“Tag Parser”改为“Default”(从菜单上的File-> Preferences-> Settings中打开),来打开新的智能感知功能。 智能感知状态指示器 在状态栏的右上角,您会发现两个图标可以显示智能感知引擎的解析状态 ——红焰图标代表基于编译器的智能感知引擎,白色数据库图标用来显示Tag Parser在解析文件中的位置。将鼠标悬浮在数据库图标上可通过提示信息了解已解析的文件数和需要解析的文件总数。 告诉我们您的想法 下载Visual Studio Code的C / C ++扩展,尝试一下,让我们知道您的想法。关于GitHub的文件问题和建议。在本次快速调查中为我们提供反馈意见,以帮助您根据自己的需要制定此扩展。您也可以在Twitter上找到我们(@VisualC)。

0

Visual Studio中的ARM GCC交叉编译

[原文发表地址] ARM GCC Cross Compilation in Visual Studio [原文发表时间] 2017/10/23 在Visual Studio 2017 15.5预览2中,我们引入了针对ARM微控制器的交叉编译的支持。要在安装中启用此选项,请使用C ++工作负载选择Linux开发,并选择嵌入式和IoT开发选项。这将添加ARM GCC交叉编译工具和Make进行安装。 我们的交叉编译支持使用我们的“Open Folder”功能,因此没有涉及项目系统。我们正在使用来自其他Open Folder场景的相同的JOSN配置文件,并添加了其他选项来支持这里介绍的工具链。我们希望这为许多风格的嵌入式开发提供了灵活性。开始使用此功能并了解功能的最佳方法是使用ARM mbed在线编译器导出的项目。我们将在这里介绍基础知识,了解有关在线编译器的更多信息,请参阅ARM的教程,您可以在这里注册一个账号。 ARM的在线编译器可以让您选择目标平台并相应地配置您的项目。我们正在使用ST Nucleo-F411RE,但编译器支持的任何一个板都应该是正常的。单击新建,然后在打开的对话框中选择一个模板以开始使用。我选择了“Blinky LED test for ST Nucleo boards”。 然后在程序工作区中选择程序,右键单击并选择导出程序。 在导出程序对话框中,为导出目标选择GCC(ARM Embedded)。 这将下载Zip文件到您的计算机。将该文件的内容提取到您喜欢的位置并打开Visual Studio。现在用File–>Open–>Folder打开它。我们需要通知VS这是什么类型的的C++代码,所以进入项目菜单并选择Edit Settings–>CppProperties.json。修改内容,所以只有一个条目与以下匹配。 { “configurations”: [ { “inheritEnvironments”: [ “gcc_arm” ], “name”: “gccarm”, “includePath”: [ “${env.INCLUDE}” ], “defines”: [ ] } ] } gcc_arm的环境定义设置了VS安装的ARM…

0