问题 将Visual Studio C ++移植到Linux


我们有一个不太复杂的但是  (即大量文件)在VS2010中用C ++ 0x标准编写的Visual Studio C ++ Win32控制台。 它不使用任何非标准代码或任何东西(希望!)。

我现在想把它移植到Linux。 哪种方式最快的方法呢? autoconf的? 老式的make文件? 还有其他方法吗?


9615
2017-07-21 09:57


起源

我错过了什么? C ++ 0x是一个 建议 标准最后我听到,这意味着你的代码 是 如果使用其中的功能编写,则为非标准。 - Amardeep AC9MF
实际上,C ++ 0x是C ++编程语言的计划新标准的非官方名称。 - MBZ
是否 计划 与 建议 表示批准状态有何不同?我只是担心将代码编写到任何东西,直到它是 该 标准。 - Amardeep AC9MF
它现在几乎是标准的,因为所有流行的编译器都支持它。 - MBZ
@Amardeep:VS2010中的所有功能都已完成,即没有重大更改(只是错误修正和次要附录)。 GCC for Linux支持更多功能。这里的C ++ 0x没有问题。 - Puppy


答案:


我会使用常规make,但尽可能使用默认规则保持简单。随着时间的推移添加依赖项。

编辑:  在临时步骤中,使用mingw构建它,以便在新构建机制中有可用的构建之前,可以避免整个API移植问题。

如果您的控制台应用程序调用win32 API函数,那么您可以选择修改使用它的所有源代码还是编写实现这些函数的模块。

在此类型的先前移植工作中,我尝试了两种方式,后者更容易。我最后只写了大约18到20个垫片函数。

这是成功的,我最终编写了一个操作系统抽象层,在许多项目中使用它只是让我在Windows native,cygwin,Linux,VxWorks等上编译,对一个或两个文件进行微小的更改。

(p.s.对基于C ++的操作系统抽象层的开源版本感兴趣吗?如果有足够的兴趣,我正考虑向全世界发布它的无阻碍版本。在BOOST太重的地方 - 即嵌入式项目时,它最有用。)


7
2017-07-21 11:44





最有可能你不需要autoconf(我建议你不要触摸它, 除非你喜欢痛苦),因为你不是想要移植到十几种Unix风格。

  1. 手动滚动Makefile。如果您有一组共享规则并且具有仅指定源文件和编译选项的最小Makefile,则应该不会太困难。
  2. 使用GCC 4.5作为 它支持更多的C ++ 0x功能

3
2017-07-21 10:08





您可以从Visual Studio导出make文件。

更新:实际上你不能再了,除非你有VC6躺着


2
2017-07-21 10:03



thankx。任何教程,链接,关键词? - MBZ
更新为我错了。 - graham.reeds
我不会对VS或C ++发表任何评论,但是对于那个吸引人的化身来说却是+1;) - Carl Smotricz


远离AUTO *并进行配置。这些都是可怕的恕我直言。

如果你能以某种方式获得VS 8或9 vcproj / sln,你可以使用 这个。我没用过它,所以我不能给出任何建议。

如果您需要手动转换,我建议使用像CMake这样的东西,因为它很容易准备得足够快,即使对于大型项目也是如此。

如果项目有一个简单的布局,你可以成功使用Qt 4的qmake,如下所示:

qmake -project

它将输出一个qmake .pro文件,该文件可以在许多平台上转换为makefile(使用qmake)。这应该可以,但不是很完美。或者,您可以安装VS的Qt插件,并让它从现有的VS项目生成专业文件。它会使你的构建系统依赖于Qt4的qmake,这可能不是你想要的。

当然还有像cmake这样的其他东西,但它们都需要人工干预。


1
2017-07-21 11:22





最快的方法吗?

g++ *.cpp -o myapp

说真的,根据你的需要,即使生成一个makefile也可能有点过分。如果你只是对一个快速而肮脏的“让我们看看我们是否可以在Linux上获得一个工作程序”感兴趣,那么只需将代码文件放在g ++中,看看会发生什么。


1
2017-07-21 12:19