前言

Source Insight是一个面向项目开发的程序编辑器和代码浏览器,它拥有内置的对C/C++, C#和Java等程序的分析。能分析源代码并在工作的同时动态维护它自己的符号数据库,并自动显示有用的上下文信息。越是大规模的代码,越能显示出SI的强大之处。Linux服务器开发领域,很多时候代码往往是从Linux主机上copy一份到Windows,然后SI为其创建项目。代码在Windows上修改好后,用WinSCP上传到Linux主机替换源代码,或着使用Beyond Compare对比合并代码再上传,总之操作起来很麻烦。除此之外,也是用SI的最大遗憾,就是这玩意不支持编译调试功能。Visual Studio 2017开始引入了cross platform feature,可以远程GDB调试,但是目前很多地方还不是很完善,SI还是大多数人的选择。既然SI的强项是看代码,那么本为将介绍如何让你更爽的看Linux项目代码。

背景

目前共享单车如火如荼,本人也开发了一套共享单车后台系统,主要语言是C/C++。这套系统运行在WMware Workstation 15上Ubuntu 16.04虚拟机中。

Win 与 Lnx共享一套代码

为了Windows本地SI编辑代码,与Linux主机端调试代码无缝对接,我寻找了若干跨平台代文件共享方案。

首先WMware Workstation Tools自身提供服务用于解决Host与VM之间文件共享、DNS、NAT、DHCP等问题。这些服务当VM是Windows时工作良好,但是当VM是Linux是,WMware Workstation Tools提供的文件共享服务几乎就是不能用。而且更有意思的是,你在Linux平台下安装WMware Workstation Tools,会弹出提示,提示你换别的软件使用。官方都不建议使用,我们还是别试了。

WMware Workstation Tools说白了只是WMware提供的一种服务,脱离了虚拟机环境并不具有问题通用性,于是我选择了使用samba服务。我的Linux虚拟机运行的是Uubntu 16.04。参考这个视频叫你如何设置Samba,进而实现Linux与Windows无缝对接。我将自己的项目以及常用头文件映射到了WIndows本地,如下图:

SI针对Z盘建立项目,然后编辑修改代码,保存后Linux端可以直接编译调试。但是对于一些include /usr/local/include下的代码,SI却无法解析。没办法,那个文件没在SI项目中的原因啊。

Win 查看 Lnx 上代码

在上一节中,其实已经部分解决了查看代码的问题。但是,部分位于/usr/local/include 或者 /usr/include 下的代码是无法成功解析并查看的。如下图

TNonblockingServer.h文件位于/usr/local/include/thrift/server/ 目录下,我自然是没办法解析他的。于是我有针对/usr/local/include做了映射,并将其作为External Symbols导入到当前SI项目,这样就完美解决了查看非SI项目中代码的问题。具体步骤如下:

Project→Import External Symbols for Current Project...→Add→Import from a source code tree,然后再Project→Synchronize File..…

能否在Project Files中搜索SI项目外的文件

如果你按照上面的步骤走到这里,答案是不能。这是SI划定项目文件范围的规则决定的。Project→Add and Remove Project Files..…

这一个地方就限制死了你可选文件的范围。能导入外部符号已经很良心了,这个是真没办法实现了。

当然要想做其实也有办法,就是把项目文件、/usr/local/include都放在一个项目文件夹中,然后针对这个文件夹建立SI项目,但是这样做有破坏了原有代码结构。看个人取舍吧

A quick introduction to Source Insight for seamless development platform between Linux and Windows的更多相关文章

  1. windows7使用Source insight上远程修改ubuntu共享内核源码

    由于本人阅读喜欢使用source insight.前段时间接触了linux核代码,而这份代码只能放在ubuntu服务器上编译,刚开始的时候是在windows上修改,完了之后再copy到服务器上去编译, ...

  2. wine on ubuntu linux, and source insight 绿色版的安装

    1.安装一些必要组件 winetricks msxml3 gdiplus riched20 riched30 vcrun6 vcrun2005sp1 wenquanyi 2.拷贝字体 下载网盘中的字体 ...

  3. windows7使用Source insight上远程改动ubuntu共享内核源代码

    因为本人阅读喜欢使用source insight.前段时间接触了linux核代码,而这份代码仅仅能放在ubuntuserver上编译.刚開始的时候是在windows上改动,完了之后再copy到serv ...

  4. 在ubuntu12.04中安装wine和source insight

    1.安装wine sudo apt-get install wine 2.安装source insight 将source insight安装的可运行文件拷贝到ubuntu中.我拷贝到了~/Deskt ...

  5. 如何将vim打造成Linux下的source insight

    编写者:龙诗科 邮箱:longshike2010@163.com 2016-01-06 众所周知,windows下的source insight是阅读项目代码的神器,其神奇之处在于可以根据当前鼠标所指 ...

  6. A Quick Introduction to Linux Policy Routing

    A Quick Introduction to Linux Policy Routing 29 May 2013 In this post, I’m going to introduce you to ...

  7. Perforce 与Source Insight, Visual Studio集成

    转自:http://shashanzhao.com/archives/837.html 1.Perforce 首先需要为perforce设置系统环境变量,以便perforce命令行可以正常使用. 环境 ...

  8. Linux下Source Insight的安装和汉化

    原创文章,转载请注明出处. 工欲善其事,必先利其器.Source Insight绝对是阅读C和C++代码的利器,另外,Source Insight的体量很小,安装便捷,显示直观,比vim+cscope ...

  9. ubuntu中source insight打不开,报错pagefault的解决方法

    在ubuntu中装了source insight用来看代码. 但用了一段时间后,有一天突然就发现打不开了,打开马上会弹出wine的错误,详细信息里面是什么PageFault 0x0000008之类的, ...

随机推荐

  1. 两分钟观看 nodejs、 iojs、 npmjs 之间的狗血剧情

    开门大吉,欢迎光临.这是 乐玩nodejs npm工具库 微信公众号的第一篇文章,那就先来说说 nodejs/npm 的小秘密,话不多说,赶快开始: 通过一个时间线简要描述下 2008 年 V8 引擎 ...

  2. dotnet core swagger filter 隐藏接口和显示枚举描述

    dotnet core 2.2开发项目中,常会使用Swagger UI来生成在线Api文档. 某些接口不想放到Swagger中可以这样写Filter: /// <summary> /// ...

  3. Python3使用random生成随机数

    本文介绍使用Python3中的random库生成随机数.随机小数.随机序列.随机字符串以及扑克洗牌等方法. 一.生成随机浮点数或小数 1.#生成0-1之间的浮点数 import random rnd ...

  4. [Arch] 域名解析常用两步设置

    主站   A 记录        (对应IPv4)   主机记录: @ (表示解析到不带 www 主域名)   值为 IP 主站 CNAME 记录 (表示别名) 主机记录: www   (表示解析到带 ...

  5. [ARM-Linux开发] 嵌入式 linux如何生成ko文件

    hello.c文件如下 驱动程序: #include <Linux/***.h> 是在linux-2.6.29/include/linux下面寻找源文件. #include <asm ...

  6. idea springboot启动报SLF4J:Failed to load class “org.slf4j.impl.StaticLoggerBinder”

    <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artif ...

  7. tomcat启动时报No rules found matching 'Server/Service/Engine/Host/context'

    tomcat是8.0版本. 在eclipse启动时,第二行报这个, 同时项目也没加载(tomcat启动成功了). 网上搜了半天, 试了半天, 没搞定. 最后不经意间发现: <Context do ...

  8. 爬虫 request payloa

    小知识点: https://blog.csdn.net/zwq912318834/article/details/79930423

  9. 大数据之路【第十二篇】:数据挖掘--NLP文本相似度

    一.词频----TF • 假设:如果一个词很重要,应该会在文章中多次出现 • 词频——TF(Term Frequency):一个词在文章中出现的次数 • 也不是绝对的!出现次数最多的是“的”“是”“在 ...

  10. Linux 线程间的同步与互斥

    在线程并发执行的时候,我们需要保证临界资源的安全访问,防止线程争抢资源,造成数据二义性. 线程同步: 条件变量 为什么使用条件变量? 对临界资源的时序可控性,条件满足会通知其他等待操作临界资源的线程, ...