通常,当我们开发Linux程序时有两种方案:
在Linux上直接编写程序并进行运行测试和调试 在Windows或Mac OS X上借助工具进行远程开发虽然我自己是在Linux环境上直接进行开发的,但也有许多的人是在Windows环境上从事开发工作的,如果离开自己熟悉的系统到陌生的环境上也许会影响到工作效率。
因此今天我们就来看下如何在Windows上使用Visual Studio 2019进行Linux远程开发以及如何避免常见的陷阱。
Visual Studio的跨平台开发功能简介
从visual studio 2017开始微软推出了vs的跨平台开发功能,你可以在vs中编辑代码,随后进行跨平台编译和远程调试,将原先我们需要手动完成的工作进行了自动化,大幅减轻了我们的负担。其中支持的平台包括Android和Linux,也就是我们今天要重点介绍的主角。
也许你会好奇,vs究竟是怎样进行远程开发的,虽然你不用了解这些知识也可以进行开发,但我还是希望能用两分钟做个简短的解释。
vs进行远程开发分为两步:
创建远程环境的连接,随后让vs将远程环境中的系统头文件同步到本地(也可以指定其他地方的头文件,后面会讲解),c++的代码补全只需要头文件即可。 当代码写好后,选择合适的远程环境,vs将目标文件和代码复制到远程环境的指定位置,接着根据你的配置进行编译。 随后vs将会在console的gdb或gdbserver中运行你的程序,在此期间你可以充分享受vs debugger带来的高效和便利。经过上述步骤之后你就可以在vs里调试自己编写的跨平台程序了。
使用vs2019进行Linux远程开发
简介到此结束了,下面我们来看看在vs2019进行Linux开发的图文教程。在我们开始之前,首先要做点准备工作:
安装好vs2019,且勾选了c++ for Linux功能; 准备一个可用的Linux远程环境,例如配置了静态IP的Linux虚拟机,并且已经安装好了GCC工具链以及openssh。做好准备后我们就该进入正题了。
创建项目
安装好c++ for Linux功能后我们会在创建新项目的面板中看到Linux的选项,如图:
这里我们选择了使用传统的vs项目解决方案构建的空白控制台程序,后续的文章中你还可以看到如何创建cmake项目,这里暂且不提。
下面没什么要说的,选择项目的存储位置,注意是本地的位置,远程机器的位置在后面会进行配置:
点击创建,我们的远程开发项目就创建成功了。
配置远程项目
vs不能编辑空项目的配置,所以我们先在项目中创建一个main.cpp
,然后点击顶部菜单:项目->属性,你就能看到项目的配置界面了:
远程计算机是在调试中的远程连接管理器中添加的。这里一般不需要改动,除非你需要改变项目的类型或编译结果的存放位置。如果有多个远程环境时,也可以在这里进行选择。
调试部分提供了gdb
和gdbserver
,前者是让vs在Linux上启动一个console,然后在其中运行gdb并返回输出,如果你的Linux上的终端配置了彩色输出,那么和遗憾vs并不认识他们,会显示成原始的字符串;使用gdbserver时会在远程启用gdbserver,本地vs解析回传的数据不会出现杂音。这里我们选择了gdbserver,如果你发现无法打断点,那么参考微软的建议,换回gdb方案:
接着是配置的重点,首先是配置需要同步的远程环境的头文件,有了这些文件vs才能对你的代码进行自动补全和提示: