直接用cmd编译boost库无法编译遇到的奇怪问题是unix格式文本导致的。实际使用中建议使用:Visual Studio 命令提示,这个需要安装Visual Studio。
大家知道Windows和unix/linux的文本文件在换行上不一样。通常用unix系统创建的文本文件用windows的记事本打开会遇到应该回车换行的时候全部变成黑方格。
这几天编译boost这个开源的C++库,为的是可以编译出libtorrent这个开源bt库。结果用系统提供的批处理文件自动编译怎么编译都通不过。遇到一些奇怪问题比如说:
1.编译boost时候提示命令参数错误,或者命令参数太长。
2.明明批处理脚本的代码很简单但是好像执行起来很复杂。批处理的有些行为代码里似乎没写。
3.编译无法通过但是重复编译就会导致批处理脚本一执行报告堆栈错误中断编译。
4,明明脚本内没写的指令,但是却提示这个这个指令执行错误。
我
的系统是windows xp sp3
专业版,打了最新的补丁。使用VS2010旗舰版编程工具。我本来以为是编译器太新导致的问题。后来仔细总结了这些现象,然后经过一上午的努力终于发现有
时候使用gedit编辑过,加入了一些echo输出来调试批处理之后批处理执行就正常。后来又发现了脚本内执行了一些奇怪的指令提示错误,但是这些指令似
乎是脚本内某行代码的片段。
到这里我就明白了!万恶的unix格式文本写的Windows批处理是问题的根源。而windowsxp的cmd却还傻傻的执行,其实cmd根本就不能正确读取有这种问题的批处理指令。
于是我用cmd下的more指令转换了bjam的编译脚本。结果得到了bjam.exe。谢天谢地
unix转dos格式文本的简单方法:
more unixtxt > dostxt
此外更方便的转换工具还有:
Tofrodos(需要自行下载)
网址:
!!!注意:
以上的方法就是使用cmd编译boost库的技巧。
其实我们如果安装了Visual studio应该会在visual studio中有一个开发用的命令行工具叫做"Visual Studio 命令提示"。直接用它编译就不会有unix文本格式的问题。
所以实际使用中建议使用:Visual Studio 命令提示
阅读(426) | 评论(0) | 转发(0) |