nmake的几个问题

在unix上写程序非常慢,也许是我对vi不熟悉吧。于是想,既然是纯c++程序,那么就用vc写好后再放到unix上去,应该也是可以的,于是开始:

一、首先在vc里开一个makefile工程。这时里面什么都没有。使用project->add to project把程序文件装进来。

二、设置创建选项。在project->setting里面,设置build command line,主要是填上自己的makefile文件名。这里有几个问题我搞不定。因为是默认是用nmake来管理,但是nmake的选项里好像没有用于指定目标的?为了方便我就把rebuild all options填了个clean,因为在我的makefile里clean用来清除目标文件。这样设置就使得点build时就按依赖规则编译,点rebuild时就把中间文件删掉然后从头编译,也算个是折中了吧。

三、cl的有用选项:
   /I:头文件路径
   /GX:允许c++异常
   /GZ  /ZI  /Yd:允许调试信息 等于 g++ -g,不晓得这三个各有什么用,我都一起加上
   /nologo:不要显示那么多版本信息,烦
   /Fofilename:输出的.obj文件名

四、link的有用选项:
   /DEBUG:允许调试
   /LIBPATH:库文件路径
   /OUT:FILENAME:输出文件名
   要连接的其它库直接写在后面,不作为选项形式,使用winsock函数要连Ws2_32.lib

五、可以在cl的编译标志里加一个/DWIN,在程序里通过#ifdef WIN就知道是否在windows还是unix上运行,可以做一些不同的调用,比如,unix里网络头文件与windows不一样,还有,windows上使用网络函数要先调用一个WSAStartup。

 

几个不兼容问题:
1、unix上可以把socket用fdopen打开成FILE*一样的东西,然后使用fputs和fgets按行读取,比较方便,在windows上没这个功能,用fdopen去打开一个socket时出错
2、unix上填写sockaddr_in.sin_port时用htonl,而windows用htons,一字之差,调了我半小时。
3、unix上用select可以同时测试所有的文件描述符,包括标准输入和socket,windows上也不行,如果把stdin传到fd_set里面去,调用后面的函数时就会返回10038错误,意思是socket操作应用在非socket上。

faint!windows竟然有如此之多的限制,慢慢理解到跨平台的艰难。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值