将Linux兼容项目从Windows移植到Linux

时间:2016-06-02 00:42:08

标签: c++ c linux windows

在我正在工作的公司中,我们使用Eclipse开发Windows,Visual Studio和Linux的交叉编译。我们的最终应用程序在Linux上运行我试图说服他们在Linux上构建所有东西是多么容易和快速,而不是使用旧的交叉编译器并且有各种奇怪的错误。当我在Linux上使用更高版本的gcc编译它们时,一些错误就会消失。此外,由于交叉编译器很旧,我们无法使用C ++ 11功能。

我遇到的一个主要问题是,由于我们的项目是在Windows上开发的,因此我很难对标题进行格式化!例如,假设我有一个名为io的文件夹,其中包含头文件Demo.h。那么这个

 #include <IO\demo.h>

在Windows上运行正常。但是在Linux上并不是因为Windows不区分大小写,并且\/都可以在Windows上运行。在Linux上它必须像这样

#include <io/Demo.h>

否则我收到一个错误,它无法找到指定的头文件。我们正在开展20多个主要项目,每个项目大约3-4 GB。我已经修改了其中一个。我花了大约7个小时才完成它。

是否有任何工具可以帮助我加快转换速度?

我们的源代码是95%C ++,其余的是C。

编辑:

关闭话题?甜蜜的耶稣

EDIT2:

Here是一个与我非常相似的问题。

致MikeCAT,πάνταῥεῖ,Alexander O'Mara,IInspectable,Andrew Medico:

RUN GUYS,把它投到地狱并将其标记为偏离主题。

1 个答案:

答案 0 :(得分:5)

官方标准是使用#include作为文件路径分隔符,使用c-preprocessor来解析\语句中的路径。

sed的使用似乎是MSVC扩展。

官方工具用于解决Linux下大型代码库的此类问题,awkfind

修复区分大小写有点困难,但可以使用来自Query qry = session.createQuery("from HostelHome p"); List l =qry.list(); System.out.println("Hostel Records : "+l.size()); Iterator it = l.iterator(); System.out.println("Room No Vacancy"); while(it.hasNext()) { Object o = (Object)it.next(); HostelHome p = (HostelHome)o; System.out.print(p.getRoom_no()+" "); System.out.println(+p.getVacancy()); System.out.println("----------------------"); } 的匹配结果的一些技巧来完成...