2010-07-21 74 views
11

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

我现在想将它移植到Linux上。 哪种方法是最快捷的方法? autoconf? 老式make文件? 任何其他解决方案?

+0

我错过了什么?的C++ 0x是提出*标准最后一个*我听说,这意味着你的代码** **是非标准的,如果它使用从功能写入。 – 2010-07-21 11:33:09

+0

实际的C++ 0x是C++编程语言规划的新标准的非正式名称。 – MBZ 2010-07-21 13:36:37

+0

*计划*与*提议*是否表示批准状态有任何差异?我只是谨慎的编写代码,直到它是**标准。 – 2010-07-21 14:15:22

回答

7

我会使用常规make,但尽可能使用默认规则保持简单。随时添加依赖关系。

编辑:在临时步骤中,使用mingw构建它,这样您可以避免整个API移植问题,直到您在新构建机制中有一个工作构建。

如果您的控制台应用程序调用win32 API函数,则可以在修改使用它的所有源代码或编写实现这些函数的模块之间做出选择。

在之前的这种类型的移植工作中,我尝试了两种方法,后者更容易。我最终只写了大约18到20个匀场函数。

成功了,我最终编写了一个OS抽象层,用于许多项目,这些项目只是让我在Windows native,cygwin,Linux,VxWorks等上进行编译,对一个或两个文件进行微小更改。如果有足够的兴趣,我正在考虑向世界发布一个不受阻碍的版本,它在BOOST太重的时候非常有用 - 也就是说,嵌入式项目。)

2

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

更新:其实你再也看不到了,除非你有VC6躺在附近

+0

thankx。任何教程,链接,关键词? – MBZ 2010-07-21 10:04:15

+0

更新为我错了。 – 2010-07-21 10:07:23

+2

我不会对VS或C++做任何评论,但对于吸引人的化身来说+1;) – 2010-07-21 10:10:23

3

最可能的是,你并不需要autoconf的(我建议你不要去碰它,unless you love pain),因为你是不要试图将其移植到十几种Unix风格中。

  1. 手工卷制作文件。如果您拥有一组共享规则并且具有最小化的Makefile,只需指定源文件和编译选项,则不应太困难。
  2. 使用GCC 4.5作为it supports more C++0x features
1

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

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

如果您需要手动转换,我会建议像CMake这样的东西,因为即使对于大型项目,准备速度也相当容易。

如果项目有一个简单的布局,你可以有使用Qt 4的QMAKE这样的成功:

qmake -project 

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

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

1

做的最快方法?

g++ *.cpp -o myapp 

严重的是,根据您的需要,甚至生成一个makefile文件可能是矫枉过正。如果你在一个快速和肮脏的,有兴趣的:“让我们看看我们是否能够在Linux上得到一个工作程序”,只是把你的代码的文件在g ++,看看会发生什么。