作为一个cpper和Linuxer,经常在Linux上写代码,最近发现了VisualGDB(VS的插件)这个神器,从此也可以在Windows上直接写跑在Linux的程序了!调试起来更爽!
喜欢用Linux的原因除了好用的Shell和要写跑在Linux上的代码之外好像也没什么其他的原因(这不是废话么),虽然在Linux上撸代码也很爽(SublimeText或者Clion),但是单从IDE的角度来看Win下的VS还是无可匹敌的,宇宙最强IDE没有之一。
之前也想过能否直接在Win上开发Linux的程序呢,但是结果总是差强人意,体验不怎么好,Cygiwn太卡了,虚拟机的体验也不好(为了一个Linux的环境(SublimeText+Shell)还要另开一台虚拟机)。手头倒是有块树莓派,可以SSH上去撸码然后编译(只能是本地编辑了源文件然后扔上去之后再手动编译),但是就SSH工具来说和Linux的体验也差了很多(直接用SublimeText+Shell),虽然Win下的Xshell已经很好用了。
废话不多说,先来看一下VisualGDB的功能:
使用VisualGDB我们可以创建4种不同类型的项目:
我用得到的只有后两种Linux Project Wizard
和MinGW/Cygwin Project Wizard
这两种项目。
当我们选择Linux Project Wizard
时,我们还需要一台可以SSH连接上的设备(虚拟机/VPS/树莓派等),因为我们创建的项目实际上是要在Linux的环境上执行的,不过我们可以在VisualStudio中调试/运行来控制在Linux跑的项目。
创建MinGW/Cygwin Project Wizard
项目时我们需要在本地(Windows)上安装MinGW和Cygwin,是使用本地环境的MinGW和Cygwin来编译/执行的,这个先按下不表。
需要SSH连接的设备我使用的是树莓派,现在我觉得,树莓派真是代码的神器,有了它也不需要开虚拟机了,也可以在没有网络的环境下使用(连接VPS需要我们的电脑接入网络)。使用时只需要将电脑和树莓派处于同一个局域网下即可,简直是开盖即食(哈哈)。
关于树莓派设置的东西,有兴趣的可以看下我之前的这篇博文:将树莓派打造成便携的Linux编译环境
下面是多图来介绍在VS使用VisualGDB来创建并运行一个Linux项目:
选择我们需要创建的项目的具体类型和编译环境(建议C++11):
输入你可以SSH连接的设备信息:
输入设备信息之后会自动SHH连接到设备并创建我们的项目文件夹(在/tmp/VisualGDB目录下),生成的文件会在Linux设备重启时删除(意味着/tmp/VisualGDB项目会在重启后被删除),不过幸好我们的代码是存在本地的,只有编译执行时会将代码同步到Linux设备上,删除之后等我们再次编译/执行依然会同步到Linux设备上,这个没必要担心。
选择本地和远程主机的项目存储路径(建议默认就好):
项目创建成功之后会自动打开源文件(如果是empty需要你自己添加源文件),我们可以编译运行一下试试:
运行时也可以打开SSH console,相当于在VS中内置了一个SSH嘛,不过集成度很高,用起来很爽。
可以直接在VS中对Linux项目打断点并查看局部变量等各种信息:
在设置中我们也可以更改编译器(建议使用Clang,错误信息更友好):
Now,You can start coding!
另外,可以修改项目中的设置使用VS的代码提示:
项目-右键-visualGDB Project Properties
还有项目-右键-属性
将其中的包含目录中添加一个路径,为C:\Users\username\AppData\Local\VisualGDB\RemoteSourceCache\yourVPShost\0000\include,其中的username
/yourVPShost
根据你自己的情况修改,比如我需要包含的路径就是:
1 | C:\Users\visionsmile\AppData\Local\VisualGDB\RemoteSourceCache\192.168.137.2\0000\include |
另附一点关于VPS/虚拟机/树莓派的技巧:
可以使用samba来与windows共享文件(方便传输代码,使用FTP还是太蛋疼,不能直接编辑FTP上的文件,只能下载到本地一份缓存然后修改之后再同步,很蛋疼)。
这个可以自己装:
1 | sudo apt-get install samba |
装完之后可以编辑你的samba配置来创建一个共享的文件夹:
1 | sudo nano /etc/samba/smb.conf |
下面是配置:
1 | [Linux] |
方括号中的Linux
共享的文件夹的名字,在Windows上我们映射网络驱动器时显示的名字。Path
是你要共享的路径,writeable
和read only
表示共享的文件夹的读写权限,guest ok
为yes表示允许匿名用户访问(不需要账户密码,当然也可以自己配置)。
修改完了之后保存,重启下samba服务:
1 | sudo /etc/init.d/samba restart |
然后我们就可以在Windows下映射网络驱动器
连接到共享的文件夹了:
需要注意的是,如果你连接上之后只有读写权限没有写入权限,需要你SSH连接到该Linux设备上将共享的文件夹的权限修改为777
(如我上面的配置是~/为共享文件夹):
1 | cd /home/pi |
然后reboot改设备即可。
Window下快速映射网络驱动器
通过samba我们可以创建一共享的文件夹来存储我们的代码/文件,但是每次都需要手动点映射网络驱动器也是太麻烦,而我又这么懒,所以我写了段批处理的代码,可以快速连接(前提是已经接入网络或者与设备处于同一局域网下):
1 | @echo off |
根据自己的配置修改,保存为*.bat即可,在需要时执行即可映射到网络驱动器(我们共享的文件夹)。