From:https://blog.csdn.net/mumufan05/article/details/80094637

上一篇简单介绍了vs2017新建一个linux的工程,本编将介绍一下如何管理已有的makefile工程,如果你想了解新建工程该如何操作,请点击下面的连接:

https://blog.csdn.net/mumufan05/article/details/80093732

本篇以unzip的源码工程为例进行介绍,将unzip的源码解压后我们没有在源码的根目录下找到makefile,需要手动将unix目录下的Makefile拷贝到根目录下,并在终端执行“make unzip”进行编译。

如果您的工程还没有makefile,请根据您的工程结构,搞出一个makefile,现在我假设您已经准备好了makefile了,好,我们开始。

首先,我们要做的第一件事就是想办法让你的linux和Windows进行文件共享,用什么方式不重要,只要能让你的Windows能够想访问本地文件一样去访问linux上的文件就可以,关于这一点,请您自行百度。

然后,请去https://github.com/robotdad/vclinux这个页面下载vclinux,这是微软官方提供的shell脚本,可以根据makefile生成vs的工程文件。

下载完成后放到linux上进行解压,找到bash目录中的两个脚本文件,并执行这两个脚本,命令格式如下

$ ./genvcxproj.sh 工程目录 xxx.vcxproj
$ ./genfilters.sh 工程目录 xxx.vcxproj.filters

具体内容相见压缩包中的README.md

执行完上面两条命令,就会在工程目录下生成vs的工程文件,用vs打开这个工程,然后在打开工程是属性页面,点击常规,在右边找到远程生成根目录,修改为linux工程目录所在的目录,注意是工程目录所在的目录,而不是工程文件所在的目录,比如我将unzip.tar.gz放在了/home/user/work目录,解压后会在该目录下多出来一个unzip目录用来存放unzip的工程文件,我们这里要修改的目录是/home/user/work,而不是/home/user/work/unzip,这里一定要注意,如下图

然后单击远程生成选项,在右面配置程序的生成命令,清理命令,重新生成命令,如下图

最后,我们再配置一下调试选项,点击调试,在右边配置可执行程序的路径,运行参数,工作目录等,如下图所示

至此,所有的配置都完成了,以上所有配置内容都可以根据自己的习惯进行相应的修改,调试的时候如果涉及到终端的输入输出,可以在调试菜单中找到linux控制台,使用微软提供的那个简陋的模拟终端。

用了两天,感觉这次vs2017提供的linux程序开发,完全符合微软东西的特点:好用吗?好用,真TM好用,功能很强大,用的爽吗?不爽,非常的不爽,因为超级卡。每次启动编译和启动调试的时候都非常的慢,不过这个慢也是可以理解的,毕竟编译和调试都是在远程linux上进行的。不过这次的2017可以模块安装,完全可以根据自己的需要进行定制,倒是没有以前版本那么臃肿了。

更多内容详见微软的官方博客文章https://blogs.msdn.microsoft.com/vcblog/2016/03/30/visual-c-for-linux-development/

=====================================================================

用了一段时间,发现启动编译和启动调试都非常慢是Visual Assist X的锅,把插件禁掉就很快了。但对于用习惯Visual Assist X插件的用户来说,把它禁掉也是一件十分蛋疼的事,所以就看个人的取舍了。

大杀器:VS2017 查看或调试liunx代码(转载)的更多相关文章

  1. 使用docker-compose 大杀器来部署服务 上

    使用docker-compose 大杀器来部署服务 上 我们都听过或者用过 docker,然而使用方式却是仅仅用手动的方式,这样去操作 docker 还是很原始. 好吧,可能在小白的眼中噼里啪啦的对着 ...

  2. 使用docker-compose 大杀器来部署服务 上(转)

    使用docker-compose 大杀器来部署服务 上 我们都听过或者用过 docker,然而使用方式却是仅仅用手动的方式,这样去操作 docker 还是很原始. 好吧,可能在小白的眼中噼里啪啦的对着 ...

  3. [转]使用docker-compose 大杀器来部署服务 上

    本文转自:https://www.cnblogs.com/neptunemoon/p/6512121.html 使用docker-compose 大杀器来部署服务 上 我们都听过或者用过 docker ...

  4. 使用docker-compose 大杀器来部署服务

    使用docker-compose 大杀器来部署服务 上 我们都听过或者用过 docker,然而使用方式却是仅仅用手动的方式,这样去操作 docker 还是很原始. 好吧,可能在小白的眼中噼里啪啦的对着 ...

  5. Postgresql-模糊匹配大杀器

    # Postgresql-模糊匹配大杀器 ## 问题背景 随着pg越来越强大,abase目前已经升级到5.0(postgresql10.4),目前abase5.0继承了全文检索插件(zhparser) ...

  6. [NewLife.XCode]反向工程(自动建表建库大杀器)

    NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netstandard,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示 ...

  7. postgres模糊匹配大杀器

    ArteryBase-模糊匹配大杀器 问题背景 随着pg越来越强大,abase目前已经升级到5.0(postgresql10.4),目前abase5.0继承了全文检索插件(zhparser),使用全文 ...

  8. 一文读懂机器学习大杀器XGBoost原理

    http://blog.itpub.net/31542119/viewspace-2199549/ XGBoost是boosting算法的其中一种.Boosting算法的思想是将许多弱分类器集成在一起 ...

  9. 离群点检测与序列数据异常检测以及异常检测大杀器-iForest

    1. 异常检测简介 异常检测,它的任务是发现与大部分其他对象不同的对象,我们称为异常对象.异常检测算法已经广泛应用于电信.互联网和信用卡的诈骗检测.贷款审批.电子商务.网络入侵和天气预报等领域.这些异 ...

随机推荐

  1. python练习三—解析xml

    使用python解析xml,主要使用sax的ContentHandler中的标签开始和标签结束的方法驱动,然后在开始(或者结束)事件中决定使用什么处理方法,使用dispatcher来决定并分发到指定方 ...

  2. Webpack编译结果浅析

    如今Webpack已经是一个不可或缺的前端构建工具,借助这个构建工具,我们可以使用比较新的技术(浏览器不能直接支持)来开发. 你是否好奇你写的代码经过Webpack构建之后会生成什么东西?是否有时调试 ...

  3. python模块之xml

    xml模块 xml结构 xml是种实现不同语言或程序之间进行数据交换的协议,跟json差不多,但没json使用简单.但是因为历史遗留问题,至今很多行业依然使用xml这种数据格式. xml的格式如下,是 ...

  4. C# 隐式转换关键字 implicit

    implicit 关键字用于声明隐式的用户定义类型转换运算符. 如果可以确保转换过程不会造成数据丢失,则可使用该关键字在用户定义类型和其他类型之间进行隐式转换. 引用摘自:implicit(C# 参考 ...

  5. oracle表空间大小的限制和DB_BLOCK_SIZE的概念

    之前接触的项目表空间最大也不超过10G,所以导入数据库时一直使用导入本地的oracle数据库文件的方法,即根据dmp文件大小设置一个数据文件,设定表空间最大值. --创建表空间,数据文件为'F:\ap ...

  6. Transact-SQL解析和基本的实用语句

    SQL语言 DDL(数据定义语句) DML(数据操作语句) DCL(数据控制语句) DDL 数据定义 操作对象 操作方式 创建 删除 修改 模式 CREATE SCHEMA DROP SCHEMA 表 ...

  7. [面试]中高级测试工程师必备,月薪15K+

    1.你的测试职业发展是什么? 测试经验越多,测试能力越高.所以我的职业发展是需要时间积累的,一步步向着高级测试工程师奔去.而且我也有初步的职业规划,前3年积累测试经验,按如何做好测试工程师的要点去要求 ...

  8. css 小知识点:inline/inline-block/line-height

    inline: 此元素会被显示为内联元素,元素前后没有换行符.因此:无法设置宽度和高度- inline-block: 行内块元素.元素前后没有换行符(CSS2.1 新增的值) 用通俗的话讲,就是不独占 ...

  9. K8S 基本操作

    上一篇文章中,我们一创建了一个简单的 K8S 集群,https://www.cnblogs.com/klvchen/p/9553499.html 这里我们开始使用 kubectl 命令来创建应用,下面 ...

  10. 浅析 JavaScript 中的 Function.prototype.bind() 方法

    Function.prototype.bind()方法 bind() 方法的主要作用就是将函数绑定至某个对象,bind() 方法会创建一个函数,函数体内this对象的值会被绑定到传入bind() 函数 ...