用eclipse在Windows下做C开发

    因为项目需要,需要在Windows下用C开发。一直不喜欢Microsoft对IDE的过渡封装,因此在Visual Studio下坚持了2个月实在是忍耐到了极点。于是开始尝试用Eclipse+cdt。


    首先遇到的问题就是安装。Eclipse3.3 + CDT4.x.x-master 居然存在严重Bug。害了浪费了整整两天时间,google了以后才发现大家都被这个问题困扰。直接改为Eclipse for C/C++ dev后才让编译工作顺利下去。

    初期,编译器选择的是MinGW。可以说CDT与MinGW结合的相当具备可用性。几乎不需要任何配置,就可以立刻着手编码、编译、调试。

    接下来的工作是将原来VC下写的代码移植到CDT+MinGW环境中。起初一些简单代码段的编译是非常容易的,只需要稍做修改,将诸如 #include "stdafx.h"、#pragma comment...注释掉即可编译通过。但随着移植工作的进行,一些比较复杂的代码段开始出现了问题,其中3个问题是比较严重的:

    1、Unicode char*问题。VC在6版本的时候对Unicode 的处理欠缺考虑,因此用增加了_UNICODE预处理定义,同时配合_T()宏的使用。MinGW gcc编译这些代码时,出现了大量的错误提示和警告。多半都在TCHAR WCHAR的转换上。调试了半天,可运行编译结果的时候出现不稳定状况。

    2、第二个是Link Lib的问题。MinGW提供了大量必要的头文件和Lib库,基本上能够完全兼容VC原有代码的。但有少部分VC对ANSI C的扩展未实现。这在特定的情况下给移植工作带来了很大的工作量,我不得不一层层的跟踪进去补充。耗费了很多精力。

    3、第三个问题是目前看起来最严重的。这个项目要求编译后的exe文件要非常微小——少于100K。但MinGW在这方面显出了明显的弱势。一个简单的Hello World 的C++项目Release编译后也要达到800K左右,strip后也只减到200K。难以满足我们的要求。

    鉴于上面的原因,我开始尝试Eclipse +CDT + VC编译器的结合。CDT几乎没提供任何针对VC的缺省选项和配置。只在Error parsers处提供了个CDT Visual C Error Parser。因此,不得不手工配置了。

    经过很短的尝试,就配置成功,很轻松。方法如下:

  •      创建C/C++项目时,选择Makefile project->Hello World C++ Project。注意:Toolchain 要选择--Other Toolchain---。
  •   项目创建好后要修改自动生成的Makefile文件。最关键的是下面两个修改:
  1.  将“OBJS = Test.o" 改为 "OBJS = Test.obj”。因为VC的编译器cl自动识别的目标文件时*.obj而不是*.o,这是与Gcc的重要区别。否则你编译的时候会出现“NMAKE : fatal error U1073: don't know how to make”错误提示。
  2. 将“clean:" 下一行的rm改为erase。erase是windows自带的删除命令。
  • 右键点开项目Properties设置窗口,选择C/C++ Build,钩掉Use default build command的checkbox。在Build->Build command处将make改为nmake。(nmake就是vc的“make”)。
  • 选择C/C++ Build->Discovery options,在Compiler invocation command处,将gcc改为cl。(cl是VC的编译器)
  • 选择C/C++ Build->Envionment,新创建3个环境变量:
PATH=C:\Program files\Visual Studio\VC98\Bin;C:\Program files\Visual Studio\Common\MSDev98\Bin
LIB=C:\Program files\Visual Studio\VC98\Lib
INCLUDE=C:\Program files\Visual Studio\VC98\Include

注:这里的C:\Program files\Visual Studio\就是你的VC安装路径

 

    好了,大功告成。

    相同的代码用VC编译后的大小只有40K,符合要求了。只是编译速度较MinGW的gcc慢了很多。之后我又用Visual Studio 2005的C++编译器尝试过,配置方法完全相同(改改安装路径就可以了)。但编译速度提高了非常多。甚至超过了MinGW的gcc。(Visual Studio 2005的C++编译速度一直口碑不错)。

    从目前来了,在Eclipse CDT中采用了vc编译器后,代码移植工作非常顺利。主要的工作都是花在编写Makefile上,而我一直认为自己写Makefile是件令人愉快的事,这能让你自己控制编译的过程。

    Eclipse CDT+VC的一个缺点是无法使用GDB进行DEBUG了,这对我来说无所谓,反正频繁使用gdb来调试代码是个不好的习惯。

    工程还在继续,待有了新心得有了空,再记下来。

 

 

 

 

 

 

 

------------------------------------------------------------------------------------------------------------

KO对战游戏平台 www.ko10000.com 打游戏,交朋友。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值