背景

目前很多公司的c项目代码都是在linux下编译的。而由于linux下编写代码比较麻烦,平时我们开发都是用UE或者Source Insight写代码后上传。

但用UE和SI存在以下问题:

1 写完代码后不能在本地编译,需要上传到服务器才能编译。出现语法错误又要回来改,比较耗时。特别是rcc这种多人共用同一个编译环境的,还经常相互干扰。

2 代码自动提示不够智能,因为这些程序缺少编译器,没有语义识别。更适合阅读而不是写代码用的。

解决思路

vs2010是一款比较强大的IDE,使用它可以明显提高开发效率。但直接使用vs2010编译linuxc项目存在以下问题:

1 vs2010无法识别某些Linux特有函数,导致无法编译

2 vs2010不支持utf8格式的源代码(需要转换成带签名的utf8格式才能识别)

3 vs2010内置编译器对于c99支持不好,特别是“在使用处定义变量”的功能

对于新开发项目,以上几点困难可以避免。但对于现存老项目,这些问题不方便整改。

这里提供一个解决方案(笔者经历过的几个项目实测可行),供参考。

问题1解决方案:对于这些特有函数,可以在windows建一个头文件,把相应原型写上。使用gcc编译器替代vs2010内置编译器

问题2解决方案:使用vc助手

下面文章提到的文件我后面会放到了百度网盘上。有兴趣私信,我发下载地址给你。

实际操作

安装vs2010快捷方式

或者更高版本更好,可惜我们开发环境只允许装这个版本

vs安装目录

安装win32系统的gcc

gcc-8.1.0-32.exe 我机器已经安装过了,没法截图。安装程序下载地址见后面。

安装完后的情况:

gcc安装目录

安装gawk

因为gcc默认编译输出无法被vs2010识别,所以需要用awk脚本进行转换

安装完后在系统环境变量里面增加Path变量,把gcc和awk程序路径添加进去

修改PATH环境变量

添加自定义的linux头文件

按Linux下头文件目录建好对应的头文件,每个文件统一写上

仿linux头文件

在com里面写上特有函数原型

把真正函数定义写在这个文件,方便查看修改

为方便大家操作,我把这些全打包在一个压缩包,直接解压即可。

修改gcc编译脚本

由于gcc安装路径与自定义头文件存放路径不同,需要修改编译脚本里面的头文件路径

需要修改gcc/bin 里面的-I选项即可,其它的不用改

用awk转换gcc编译输出让vs可以识别

安装vs助手

vs助手一定要装,对于vs不兼容的代码语法高亮全靠它

设置vs2010工程选项

打开vs2010进行以下设置

a 添加gcc编译命令

工具->外部工具->添加->按以下的参数新增gcc编译命令

外部工具

b 将gcc命令添加到菜单栏

工具->自定义->命令->在“工具”类别下面找到“外部命令8”(就是刚才添加的外部工具gcc)->确定

选中新生成的“外部命令8”菜单,按下移按钮,调整到自己比较喜欢的位置。

点击修改所选内容按钮,将其改名为gcc(&8)

效果如下:

添加后的菜单栏多了gcc菜单

以后修改了代码,保存,再点这个菜单或者(ctrl + 8)即可编译

编译结果在输出窗口

gcc编译成功

如果有语法错误,双击错误信息即可自动定位。

其它vs2010建议修改的设置

工具->选项->文本编辑器->文件扩展名

在扩展名文本框填上.pc,编辑器选择Visual C++,点添加

这一步目的是为了让工程里面的.pc文件也能高亮显示

工具->选项->文本编辑器->C/C++

钩选上行号,这样会在编辑界面左侧显示行号

工具->选项->文本编辑器->C/C++->制表符

制表符大小改为4,选中“插入空格”。这样输入tab键时会自动替换成空格,保证在其它编辑器上代码对齐不会乱

工具->选项->文本编辑器->C/C++->高级->IntelliSense

把“禁用IntelliSense”改为True,能减少编译器占用系统资源

工具->选项->文本编辑器->C/C++->格式设置->大纲显示

把“大纲语句块”改为True,这样if else等语句块也能折叠显示

工具->选项->环境->键盘

搜索“折叠”,找到“编辑.折叠块当前块”命令,为其分配快捷键“alt+/”,这样可以使用快捷键快捷折叠光标所在的语句块,方便阅读代码

快捷键设置

把项目相关的源代码下载到本地windows

以后开发时,在本地修改编译完后通过svn或者git提交代码

使用vs2010新建工程

文件->新建->项目->W32控制台应用程序->填上项目名,选择好项目保存位置,

新增项目

点击确定,在弹出对话框点“下一步”,把附加选项的“空项目”打上钩

添加空项目

在项目属性->C/C++->附加包含目录

填上自定义的Linux头文件目录

头文件目录

按代码目录结构新建文件夹并添加对应的文件(先新建筛选器,再添加现有项)

按代码目录建好树形结构并导入文件

好,现在就可以开始写代码了。写完代码后如果是一般直接使用vs编译就可以检查语法错误(推荐,速度较快)。有时碰上vs自带编译器不兼容的情况,则可以点击菜单栏的gcc命令进行编译。注意只能编译,链接还是会报错。这个暂时没解决,不过不影响开发。

下篇文章打算分享一些vs2010使用技巧。关于提高开发效率的技巧,如果您有什么好建议欢迎留言分享^_^。

相关推荐