用Visual Studio 2017 RC 打开任何C++ 源代码文件夹

[原文发表地址] Open any folder with C++ sources in Visual Studio 2017 RC

[原文发表时间] 11/16/2016

 

随着Visual Studio 2017RC 的发布,我们一直在改进c++源代码中的“打开文件夹”功能。在这次发布的产品中,对于调试器和C++语言服务,我们增加了生成以及更简单配置的支持。

如果你刚刚开始使用“打开文件夹”或者想要更深入的了解这些功能, 可以去C++入门介绍的打开文件功能,在那里已经更新了下面的内容。如果你目前在使用CMake, 可以去看我们的博客介绍Visual Studio的CMake支持

以下是对Visual Studio 2017的最新RC版本中的“打开文件夹”功能的改进:

 

阅读并编辑C++代码

环境变量和宏支持。 有利于配置C++智能感知和浏览的CppProperties.json 文件,目前对于指定头文件路径和其他属性值支持环境变量扩展功能。语法是将一个环境变量%FOODIR%扩展到${env.FOODIR}。 11

注意: %WindowsSdkDir% 和%VCToolsInstallDir%未设置为全局环境变量,所以确保从VS2017开发人员命令提示符启动devenv.exe,因为它定义了这些变量。

 

在此文件内,你还可以访问到内置宏:

 

  • ${workspaceRoot}—提供工作区文件夹的完整路径
  • ${projectRoot}--CppProperties.json放置的文件夹的完整路
  • ${vsInstallDir}—安装VS2017正在运行实例的文件夹的完整路径

 

CppProperties.json 智能感知。 当你安装了完整的JSON编辑器(它附带有网页开发工作负载),可以通过JSON智能感知在编辑CppProperties.json文件时得到帮助。

12

C++配置下拉列表。 你可以在CppProperties.json文件里创建尽可能多的配置,同时可以从标准工具栏的C++配置下拉列表里轻松的切换这些配置。

CppProperties.json 13 14

CppProperties.json现在是可选的和默认的。当你打开一个C++源代码文件夹,VS会创建2个默认的配置:调试和发布。这些配置是和我们在VS2015中介绍的单个文件智能感知配置是一致的。 17

 

生成C++工程

通过一系列任务集成外部工具。 现在你可以对当前工作区中的文件自动构建脚本或者其他任何外部的操作,在IDE里直接作为任务来运行它们。你可以在一个文件上右键单击选择“自定义任务设置” 来配置一个新的任务。 18

这个操作会在你的工作区中隐藏的.vs文件夹里创建一个新的tasks.json文件和一个新的任务。JSON智能感知是可用的如果你已经安装了JSON编辑器( 它附带有网页开发工作负载)。 19

默认情况下,可以从解决方案资源管理器中文件的上下文菜单执行任务。对于每一个任务,在上下文菜单的底部你会发现一个新的条目。

Tasks.vs.json 21 22

环境变量支持和宏。 就像CppProperties.json一样,你可以通过语法${env.VARIABLE}在tasks.vs.json文件里使用环境变量。

此外,你可以在你的任务属性里使用内置宏:

  • ${workspaceRoot}—提供工作区文件的整个路径
  • ${file}—提供所选文件或文件夹来运行任务的完整路径

你自己还可以指定其他可以在任务属性里使用的用户宏。例如${outDir},如下所示:

Tasks.vs.json 23

生成工程。对一个给定的任务,通过指定“contextType”来均衡“生成”,“清除”或者“重新生成”。您可以将VS内置命令连接到可以从上下文菜单调用的Build,Clean和Rebuild。

Tasks.vs.json 24 25

文件和文件夹掩码。 你可以创建任何文件或文件夹的任务通过制定起名称中的“应用于”字段。但是,若要创建更通用的任务,你可以使用文件掩码。例如:

  • “appliesTo”: “*”—任务是提供给工作区中所有的文件和文件夹
  • “appliesTo”: “*/”—任务是提供给工作区中所有的文件夹
  • “appliesTo”: “*.cpp”—任务是提供给工作区中具有扩展名.cpp的所有文件
  • “appliesTo”: “/*.cpp”—任务是提供给工作区根目录中具有扩展名.cpp的所有文件
  • “appliesTo”: “src/*/”—任务是提供给“src”文件夹的所有子文件夹
  • “appliesTo”: “makefile”—任务是提供给工作区目录的所有生成文件。
  • “appliesTo”: “/makefile”—任务只提供给工作区根目录中的生成文件。

 

调试C++二进制文件

调试任务输出。 如果你在任务定义中指定一个输出二进制文件(通过“输出”),同时如果你选择源文件作为启动项目或者只在源文件上右击并选择“调试”,此二进制文件会自动启动调试器。例如:

Tasks.vs.json 28 29

接下来是什么

现在就下载Visual Studio 2017RC, 尝试“打开文件夹”功能。对于“打开文件夹”功能的概述,请参考博客”c++概述之打开文件夹”。

随着我们不断的改进“打开文件夹”支持功能,我们希望有你们的意见,以便当使用C++代码库时使用非MSBuild生成系统能确保满足你们的需求。所以尽快联系我们吧,我们期待听到你的建议!