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

[原文发表地址] Visual Studio Code C/C++ extension June 2017 Update [原文发表时间] 2017/06/27 今天我们很激动地宣布发布2017年六月份更新的版本Visual Studio Code C/C++ 扩展。这次更新可以自动完成语义感知成员列表并提高了整体默认智能感应的行为,提供了更流畅的开箱即用智能感应体验。 如果你之前还没有试用过VS Code,你可以先下载VS Code(Stable build)或者是 VS Code Insiders。然后再下载Visual Studio Code C/C++ 扩展并尝试使用。如果你已经安装了此扩展程序,VS Code将通知你更新并自动安装。 提供此扩展概述的原始博客文章Visual Studio Code C/C++ 扩展已经通过这些更改进行了更新。 改善智能感应体验 在上个月的更新中,我们增强了原始标签解析器智能感应引擎的操作,这个引擎通常对使用新的更强大的语义引擎编辑功能提供“模糊”查询结果。这种新的引擎提供了更高效的语言服务功能的能力。与5月更新一样,这种新的引擎仅仅被默认使用在VS Code Insiders中。然而,我们鼓励大家尝试在你的settings.json文件中将” C_Cpp.intelliSenseEngine”的值由”Tag Parser”改为”Default”。 在更新你的includePath来查找所有头文件之后,新的智能感应引擎将会为类/结构体/命名空间成员,快速信息工具提示和错误曲线提供更加准确的自动填充建议。新的智能引擎尽可能地被用作默认值。在引擎返回错误的情况下,扩展将会动态地返回到标签解析器来作用打开的文件。查看下面的”回退如何工作以及如何控制行为”来获得更多的信息。 成员列表自动填充 与标签解析器不同,新的语义引擎可以确定类型,因此在当你输入”.”,”->”或者是”::” 时提供更加简洁准确的完成项列表。 请注意,在输入“::”时,或者在没有提供范围字符时提供快速建议时,在全局范围内不启用此功能。标签解析器继续为这两种情况提供建议。 IntelliSenseMode设置 在5月份的更新中,语义引擎限制在Windows上的”MSVC mode”下编译代码以及在Linux和Mac上的”Clang/GCC mode”下编译代码。在这次的更新中,我们添加了一个设置,可以让你选择使用哪种模式来编译代码而不管你正在运行的平台。 例如,如果你正在windows平台上使用MinGW,你现在可以指示智能感应引擎使用“Clang/GCC mode”而不是“MSVC mode”。可以通过修改c_cpp_properties.json文件中活动配置中的“intelliSenseMode”属性来配置该模式。 如何返回之前的智能引擎工作及如何控制行为 此次的扩展程序首次尝试使用新的智能感应引擎来解析所有打开的文件。如果它发现自己找不到头文件或是依赖关系,它将会返回到标签解析器并提供原始的模糊智能感应行为。这个返回会影响完整的翻译单元而不仅仅是单个打开的文件。其他打开的TUs将继续使用新的智能感应引擎,在这个引擎中所有的#include依赖关系都可以被解决。这个设计有效地解决了“sea of red…

0

在Visual C++中使用CMake进行Linux开发

[原文发表地址] Visual C++ for Linux Development with CMake [原文发表时间] 2017/08/25 在Visual Studio 2017 15.4中,你现在可以从CMake项目中定位Linux。这使你可以使用现有的代码库,使用CMake作为构建解决方案而无需将其转化为VS项目。如果你的代码库是跨平台的则可以从Visual Studio中定位Windows和Linux。 本文会对Visual Studio中的CMake支持Linux做一个概述。如果你刚开始接触CMake你可以查看这篇博客Visual Studio中CMake的概述。 更新10/10/2017:在第15.4版的第一个版本中,我们有一个安装程序创建错误,当它与Linux工作负载一起安装时,会破坏CMake。 我们在这里记录了一个解决方法。 这将在下一次维修更新到15.4中得到修复。 开始 要启用这个功能,请确保在Visual Studio installer 页面上选上Linux development C++ Workload。当你选上这个Workload后,Visual C++ tools for CMake and Linux组件就会被默认选上。Visual Studio中的CMake支持需要在CMake 3.8中引入的服务器模式支持。如果你的包管理器提供的是较旧版本,请查阅从源代码构建CMake的说明。 开始使用此功能,在与cpp文件相同的文件夹中创建一个简单的CMakeLists.txt文件,如下所示。(通过File>Open>Folder…或者devenv.exe<foldername>打开文件夹)。 Hello.cpp #include <iostream>; int main(int argc, char* argv[]) {     std::cout << “Hello” << std::endl; } CMakeLists.txt project…

0

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

[原文发表地址] Visual Studio Code C/C++ extension August 2017 Update [原文发表时间] 2017/08/22 上周我们2017年8月的更新发布到Visual Studio Code C/C++ 扩展。除了修复了几个问题,此更新还包括一个新的可以重置智能感应数据库文件命令,并继续改进到新的基于编译器的智能感应引擎。感谢所有在过去几个月内为我们提供关于新的智能感应引擎反馈意见的人! “Reset IntelliSense Database”命令 扩展发布的“Tag Parser”,用于为某些智能感应功能提供快速但“模糊”的查询结果。它还被用作由基于新的基于编译器的智能感应引擎提供的其他智能感应功能的后备解决方案,例如快速信息工具提示,错误曲线和类/结构/命名空间成员的自动完成。标签解析器从源文件构建符号数据库,并将数据库文件(.BROWSE.VC.DB)存储在您在VS Code中打开的每个文件夹的磁盘上。 但是,当符号所在的路径从browse.path设置中删除后,标记解析器目前不会自动从数据库中删除符号。随着一些无关符号信息被遗留在数据库中,一些智能感应和代码浏览功能可能会提供不太精确的结果。例如,“Go to definition”可能会导航到一个无关的符号。我们正在努力使数据库始终与browse.path设置引用的符号相匹配,但在此期间,你如果遇到这种情况,一种恢复方法是清理数据库文件,允许它再次构建。在这个更新中,我们添加了一条新的命令“Reset IntelliSense Database”,这个命令可以在磁盘上找到数据库文件,然后删除它,再重新构建一个新的。您可以通过命令面板访问命令,如下屏幕截图所示。 请注意,该命令目前可以重置的数据库文件仅是在VS Code中第一次打开的文件夹。如果您使用VS Code Insiders构建,这将允许您在VS Code中打开多个文件夹,但该命令不会清除任何随后打开的文件夹。我们将在以后的更新中添加对多个文件夹的支持。 新的智能感应体验 在4月份首次发布的新的智能感应体验在VS Code Insiders作为默认设置,并且根据过去几个月收到的反馈(感谢所有向我们发送反馈的人们),已经大大改善了这个功能。现在我们觉得这是一个很好的时机,逐渐对更多用户将这个功能设置为默认功能。新的智能感应引擎是与Visual Studio中多年来为C++智能感应和代码浏览功能提供支持的引擎相同的。对于VS Code,到目前为止,我们已经使用新引擎实现了几个智能感应功能,包括针对类/结构/命名空间成员的自动完成建议,快速信息工具提示和错误曲线(语言分析)。这些功能现在可以提供比基于标签的智能感应更好、更准确的结果。您可以通过查看settings.json文件中的“C_Cpp.intelliSenseEngine”设置值(从菜单File->Preferences->Settings打开)来查看使用的智能感应引擎。将值更改为“默认”将为您提供全新的智能感应体验。我们鼓励大家尝试一下,让我们知道您的想法。随着我们新的智能感应引擎推出更多的功能您的反馈将有助于我们塑造功能。 此次扩展允许新的智能感应体验首先尝试使用新的智能感应引擎完全解析所有已打开的文件。如果它发现找不到头文件或依赖关系,它将返回到标签解析器,并提供原始的模糊智能感应行为。博客Visual Studio Code C/C++ 扩展2017年6月更新中详细介绍了后备行为如何工作以及如何控制它。 告诉我们你的想法 我们鼓励大家尝试新的智能感应并向我们发送反馈。 下载Visual Studio Code 的C/C ++扩展,尝试一下,让我们知道你的想法。关于GitHub的文件问题和建议。 如果您还没有提供反馈意见,请参加这项快速调查,以帮助我们根据您的需求制定这一扩展。

0

出差报告:关于在多伦多夏季ISO C++ 标准会议的进展

[原文发表地址] Trip report: Evolution Working Group at the Summer ISO C++ standards meeting (Toronto) [原文作者] Andrew Pardoe [原文发表时间] 2017/7/28 2017夏季ISO C++ 标准会议在7月10号到15号在多伦多大学如期举行。非常感谢Google, Codeplay 和IBM对本次会议的赞助,以及来自Mozilla,CollègeLionel-Groulx,Christie Digital Systems和Apple的帮助与组织。 当然,我们也非常感谢海滨国际在加拿大国家电视塔举办宴会。 今年在多伦多,我们有一个很有成效且相当和谐的发展工作组(EWG)。在五天三夜的会议上我们讨论了45个提案,其中周二晚上的Concepts和关于SG7的会议都是关于反思和编程研究小组的联合会议。我们大多数的人也参加了周一晚上关于P684R0, C++稳定性,速度和部署计划的会议。 C++标准委员会非常辛苦的工作,每天上午下午四小时的小型工作组讨论(如EWG)而且还要在晚上深入讨论一个课题几个小时。周六全球有约120位来自世界各地的专家参加此次闭幕会议。因为WG21成员在会议举行期间做了很多工作,所以一切都很顺利的进行。小组主席,论文作者和所有的参会人员阅读了大量的论文,并且在演讲之前做了很多讨论。在这里会议里我们做了大量的工作来改进提案:在第一次的演讲中几乎没有重要的提案被接受,正如WG21召集者Herb Sutter说”顺利的事不会偶然发生”。如果你希望事情顺利进行,那么你必须提前做好准备。 这里有每个人从第一次到有经验的参与者的许多在线出差报告。这次报告非常的集中,主要专注于EWG,在那里我是工作组的抄写员。主要把时间花在缮写上。这份报告旨在概述EWG在多伦多的工作情况,而不是对C++标准工作组进展的记录。 为所有的论文提供链接。连接服务器自动转到论文的最新版本,而不一定是当时在多伦多讨论的版本,如果你查看的论文版本较高的话(如:PxxxxR1 而不是 PxxxxR0),那应该是收纳了来自多伦多讨论的反馈之后的版本。 Concepts技术规范合并到草案标准 多伦多会议上最大的消息就是我们把Concepts TS 合并到了C++20草案标准中。这次演讲用一个马拉松式的环节把会议推向了高潮,移除了模板导入语法和“自然语法”。此提案P0696R0阐述的目标移除Concepts语法中有争议的部分,以便我们可以将TS成功合并到标准草案中。 自然语法(也称为“缩写”或“简写”语法)的主要观点是它支持泛型编程。特别是Stepanov风格的泛型编程。重在使用而不是语言本身。简化语言的使用促进良好的编程风格和规范。 经过多番讨论,小组投票删除了这两个语法,需要注意的是我们将在以后添加自然语法。提出的例子就是时候事实上我们没有包含泛型的Lambdas当我们引入Lambdas,并且引入C++11的constexpr的重大扩展。EWG致力于在未来的会议提案中提供缩写语法,理想情况下C++20完成之前。 我们就Concepts这个话题讨论了六次,这些讨论按时间顺序列出,稍后的讨论可以部分的覆盖先前讨论的决定。 Richard Smith(工作草案项目编辑) 和Andrew Sutton(Concepts TS 的项目编辑)提交了两篇论文,每篇文章都得到了强有力的支持。 P0717R0:该提案简化了两个约束是否相等的规则。在以前,实现必须逐个比较相等的Concepts。 P0716R0:在2017年2月的会议之前,我们有两种Concepts的写法:一种是函数,一种是变量,该提案统一了Concepts的语法定义。具体来说,它删除了关键字bool 和其它复杂的变量声明语法。 P0691R0:列出了Concepts TS 当前的问题。我们仅仅扑捉到了问题21:需要括号内的requires 语句来帮助解析requires (bool(T())). P0694R0:本文是Bjarne…

0

使用MinGW和Cygwin在Visual C ++中 以及打开文件夹

[原文发表地址] Using MinGW and Cygwin with Visual C++ and Open Folder [原文发表时间] 2017/07/19 使用Visual Studio 15.3预览版4构建跨平台C和C ++代码比以往任何时候都更加简单。最新的预览改进了对替代编译器的支持,并构建了MinGW和Cygwin等环境MinGW(Windows的Minimalist GNU)。如果您不熟悉它,它是GCC系列中旨在Windows上本机运行的编译器。 如果您有兴趣快速了解这项新功能,请查看我们最新的9频道GoingNative剧集。 然而,大多数MinGW安装不仅仅包括一个编译器。 MinGW的大多数发行版都包含了许多其他工具,可用于熟悉的GNU工具集在Windows上构建和组装软件。 MinGW构建环境通常包含一个完整的POSIX开发环境,可用于使用POSIX构建工具和POSIX软件开发本地Windows软件,该软件可在仿真层的帮助下运行在Windows上。 请下载预览并尝试最新的C ++功能。 您还需要确保除了Desktop C ++之外,还要安装用于C ++工作负载的Linux Tools以使用这些新功能。 您可以在Microsoft文档网站上了解有关打开文件夹的更多信息。 我们期待您的反馈。 为什么是MinGW 这里有您希望在Windows使用MinGW的三个原因。 第一个是简单的编译器兼容性。 我们都喜欢MSVC,但现实是,一些代码库是从根本上设计的,期望它们将与GCC一起构建。 对于许多跨平台项目尤其如此。 移植这些代码库以支持MSVC可能代价昂贵,当您想要起动并且运行您的代码。 使用MinGW,您可以在几分钟启动并运行而不是几天。 然而,使用MinGW源代码兼容性相比于GCC更为引人注目。 MinGW环境不仅仅是编译器,而是包括整个POSIX构建环境。 这些开发环境允许跨平台项目在Windows上构建,而对其构建逻辑的修改很少。 需要Make或AutoTools,它已经安装 – 如果您使用像MSYS2这样的每个工具环境,你可能需要的只是一个单独的软件包管理命令。 最后,一些MinGW发行版(如MSYS2)允许您在Windows上构建本机POSIX软件,而无需将代码移植到Win32中。 这是通过允许本机POSIX工具在Windows上运行的仿真层来实现的。 同样的层是让您最喜爱的POSIX构建工具在MinGW环境中运行。 在Windows上安装MinGW 一旦安装最新的Visual Studio Preview后MinGW的入门就很简单。 首先,您需要确保在安装Visual Studio时选择C ++工作负载。 接下来,您将需要下载MinGW。…

0