ARM64平台粉墨登场

在Visual Studio 2019 v16.9 Preview 3中,我们添加了对CMake工程部署到一台远程Windows系统的支持,另外开发者可以借助Visual Studio remote tools来对程序进行调试。
CMake工程开发者现在可以通过交叉编译(使用cl或者clang-cl)来将ARM64版本Windows作为目标运行平台,并在Visual Studio中部署,调试应用程序。

可以通过这份教程《Tutorial: Debug a CMake project on a remote Windows machine》来了解上述工作流程。教程主要面向ARM64开发平台,但是其中的一些步骤对于其他架构的Windows平台都是通用的,所以对于其他平台的开发者来说,还是非常有借鉴意义的。

在开始之前,你需要安装ARM64编译工具到开发机上。在这个场景下,你的开发机就是你进行程序开发和安装Visual Studio的机器。
另外,你还需要安装和配置remote tools(远程工具集)到目标机。这里说的目标机是指一台ARM64架构的Windows系统,在目标机上会执行应用程序并可以进行调试。

下图展示了如何安装最新版本的ARM64编译工具到你的开发机。

打开网易新闻 查看更多图片

面向ARM64进行CMake工程交叉编译

现在,你可以向CMake配置编辑器中添加一个新的CMake配置,这个新的配置的类型可以是arm64-Debug,也可以是arm64-Release。
也可以修改现有的CMake配置以编译msvc_arm64_x64,clang_cl_arm64_x64,msvc_arm64或者clang_cl_arm64工具集。

arm64_x64工具集将会选择64位的开发机工具来面向ARM64平台进行交叉编译,而arm64工具集则使用32位的开发机工具来进行交叉编译,如下图所示:

在一台远程Windows系统上调试CMake工程

向launch.vs.json配置文件中添加一项类型为C/C++ Remote Windows Debug的调试配置项,这样就可以在一台远程Windows系统上进行调试了。
你将需要设置remoteMachineName为远程ARM64系统的IP地址。你可能还需要升级authenticationType的值为匹配的远程系统的认知模式。更多信息请查看教程《remote debugging tutorial》。

打开网易新闻 查看更多图片

请注意,Visual Studio对远程Linux开发的支持需要你在Connection Manager中添加一个到远程系统的SSH连接。而远程的Windows系统则并不需要你使用Connection Manager,因为它使用了Windows remote debugger(msvsmon·exe)来替代SSH进行通信。

当你执行应用程序时,Visual Studio将会在开发机上交叉编译程序代码,然后将程序远程部署到目标机,随即开始在远程目标机上进行调试。
你可以像本机开发一样,进行断点调试并使用Visual Studio中其他的调试功能。如下图所示:

总结

MS: 让我们,再一次地,热情地,拥抱Linux和开源吧。(不拥抱不行啊)

最后

Microsoft Visual C++团队的博客是我非常喜欢的博客之一,里面有很多关于Visual C++的知识和最新开发进展。大浪淘沙,如果你对Visual C++这门古老的技术还是那么感兴趣,则可以经常去他们那(或者我这)逛逛。
本文来自:《Windows ARM64 support for CMake projects in Visual Studio》