使用Visual Studio 2017作为Linux C++开发工具
Visual Studio 2017
微软的宇宙第一IDE Visual Studio 2017正式版出来了,地址是:https://www.visualstudio.com/vs/whatsnew/
VS2017亮点很多,包括模块化安装、启动速度加快(第一次启动加快50%以上)、github插件、启动页完善、增强代码提示功能,等等,更多参考:https://www.visualstudio.com/en-us/news/releasenotes/vs2017-relnotes。

Visual Studio 2017 Support for Linux Development
VS2017可以编辑、编译、调试linux上的c++、python、node.js程序(详细)。
甚至可以编译调试.NET程序,支持的Linux平台包括:
- CentOS 7.1 and Oracle Linux 7.1
- Debian 8
- Fedora 23
- Linux Mint 17
- openSUSE 13.2
- Red Hat Enterprise Linux 7.2
- Ubuntu 14.04 and 16.04
博主主要是c++作为开发语言,并且绝大部分代码都有跨平台的需求。博主一般步骤如下:
- 在windows机器上使用visual studio开发大部分算法功能模块,并且调试优化完毕;
- 在涉及到IO或者网络相关的部分,需要port到linux平台,痛苦的用vim编写代码,gcc编译,gdb调试。
重点关注其中Visual Studio在C++跨平台方面的亮点,即Visual C++ for Linux,有了它,就能用最先进的IDE进行跨平台的开发了,好开心!
Visual C++ for Linux
VC++ 2017支持在编写、调试Linux下的C++程序([详细(https://blogs.msdn.microsoft.com/vcblog/2016/03/30/visual-c-for-linux-development/))。
创建跨平台Linux C++程序,如图:

实际使用效果如下图,可以看到,能够在VS下面编译Linux代码,甚至包括linux特有的头文件。除了代码补全很爽之外,还有代码着色,可视化调试等各种优点。


使用步骤
- 目标linux机器上安装好编译环境与调试环境,如在ubuntu下,安装好openssh-server/g++/gdb/gdbserver等。
sudo apt-get install openssh-server g++ gdb gdbserver
本机安装好visual studio 2017,需要选择安装Cross Platform Linux C++环境。
打开Visual Studio,新建工程,选择Cross Platform/Linux/Console Application。
在第一次build之前会要求ssh连接到目标linux机器,填上用户名密码连接目标机器。如果需要更换目标机器地址,在Tools/Options/Cross Platform下进行管理。
- 设置好一系列选项(黑体部分),与普通的Win32程序的设置基本一致。需要注意如下2点:
- vs不会自动把addtional include中的头文件复制到本地来做代码补全的提示,需要手动将linux下面的/usr/include、/usr/local/include等目录复制到vs的linux header path(如:C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\Linux\include\usr)
- 头文件包含目录和库文件包含目录均为linux下的绝对路径。
- 编译时vs会将代码复制到目标机器的~/projects/[project-name]目录下,二进制文件在其目录的bin目录下。如下图,Linux环境下可以看到,已经有代码了。
实际开发
在初步使用体验中,感觉这个vs for linux还不是特别成熟,有不少问题,包括:复制文件速度过慢、无法多线程编译、编译输出信息丢失(不够友好)、无法操作跳板机等。
不过该工具作为编码的辅助工具,仍然非常具有价值,结合了vs强大的的代码编辑与调试功能和linux机器的天然服务器特性。未来可期!
更多文章,查看主页。
使用Visual Studio 2017作为Linux C++开发工具的更多相关文章
- visual studio 2017搭建linux c++开发环境
https://blog.csdn.net/cekonghyj/article/details/77917433 https://blog.csdn.net/norsd/article/details ...
- Visual Studio 2017 ASP.NET Core开发
Visual Studio 2017 ASP.NET Core开发,Visual Studio 2017 已经内置ASP.NET Core 开发工具. 在选择.NET Core 功能安装以后就可以进行 ...
- visual studio 2017 中默认无法开发 Android 8.0 及以上系统的解决方案
一般默认比较旧有两个原因,系统版本过旧,Visual Studio 版本过旧. 第一步,将windows 更新到最新版,必须是windows 10 并且更新到最新. 第二步,将visual studi ...
- Gtest:Using visual studio 2017 cross platform feature to compile code remotely
参考:使用Visual Studio 2017作为Linux C++开发工具 前言 最近在学Gtest单元测试框架,由于平时都是使用Source Insight写代码,遇到问题自己还是要到Linux下 ...
- Visual Studio 2017开发环境的安装
Visual Studio 2017是微软为了配合.NET战略推出的IDE开发环境,同时也是目前开发C#程序最新的工具,本节以Visual Studio 2017社区版的安装为例讲解具体的安装步骤. ...
- 最强 IDE Visual Studio 2017 正式版发布
Visual Studio 2017 正式版发布,该版本不仅添加了实时单元测试.实时架构依赖关系验证等新特性,还对许多实用功能进行了改进,如代码导航.IntelliSense.重构.代码修复和调试等等 ...
- 终于等到你,最强 IDE Visual Studio 2017 正式版发布
Visual Studio 2017 正式版发布,该版本不仅添加了实时单元测试.实时架构依赖关系验证等新特性,还对许多实用功能进行了改进,如代码导航.IntelliSense.重构.代码修复和调试等等 ...
- Visual Studio 2017 for Mac 体验之Android.Form
微软官方说明: Visual Studio 2017 for Mac Last Update: 2017/6/16 我们非常荣幸地宣布 Visual Studio 2017 for Mac 现已推出. ...
- Visual Studio 2017 for Mac
Visual Studio 2017 for Mac Last Update: 2017/6/16 我们非常荣幸地宣布 Visual Studio 2017 for Mac 现已推出. Visual ...
随机推荐
- 【翻译】使用Visual Studio在Azure上部署Asp.Net Core Web应用
配置运行环境 Install the latest Azure SDK for Visual Studio. The SDK installs Visual Studio if you don't a ...
- Eclipse格式化代码换行、删除空行
Java代码 Window-preference-Java-Code Style-Formatter|Edit...-Line Wrapping|Maximum line width: 修改一行最大长 ...
- lufylegend库 LBitmapData LBitmap LSprite
lufylegend库 LBitmapData LBitmap LSprite <!DOCTYPE html> <html lang="en"> <h ...
- oracle数据库包package小例子
为了把某一个模块的函数.存储过程等方便查询维护,可以把它们打到一个包里.下面给出一个简单的小例子. 1.创建包头 create or replace package chen_pack is func ...
- QEMU ELF_LOAER分析[基于MIPS]
本文用于记录对QEMU对ELF文件加载函数进行分析.根据“函数使用->函数定义->函数实现->函数实现的分析”的顺序进行分析,最终提取出ELF文件加载的代码. 1. load_elf ...
- secache 详解
介绍下secache缓存,它是属于文件缓存.简单来说,文件缓存就是把缓存数据存储到文件系统 (硬盘)中了,比 内存缓存要慢一些,但是也是有一点优点的. 1.磁盘容量大, 2保存到硬盘,说明 掉电后数据 ...
- 5个步骤创建你的第一个RESTFul 服务
1.啥是RESTFul 服务 在我们创建简单小程序前,先来学习下RESTFul 服务.RESTFul服务就是遵循了 Representational State Transfer(可以参考http:/ ...
- phpcms 列表项 内容项
根据上一篇内容继续 首页替换完成后 接下来替换列表页 首先把列表的静态网页放入相应模板的content文件夹下,并改名为 list.html 并且创建栏目时选择下面一项 同样,头尾去掉,利用{temp ...
- InnoDB和Foreign KEY Constraints
InnoDB表中中Foreign Key定义 1. InnoDB允许a foreign key引用一个索引列或者索引组列. 2. InnoDB现在并不支持用户定义的分区表有foreign keys,这 ...
- selenium框架与chrome浏览器的不兼容问题
在一次偶然的情况下,在chrome上用selenium框架去抓取某个id为XX的页面元素,使用WebDriver的findElement().click()方法进行点击,原来在firefox浏览器运行 ...







