编写跨平台程序



我怎么能写一个程序同时在Windows 7, Mac OS X(也可能是linux)上运行?

我听说Qt是一个伟大的框架,建立跨平台的gui,但我认为每个程序版本需要重新编译,不是吗?我应该在windows下编译win版本,在mac os x下编译mac版本,在linux下编译linux版本等等吗?

我正在获得想法和/或建议

底层二进制格式在每个平台上都是不同的,所以除非您使用虚拟机(如Java或Flash),否则您将不得不在每个平台上重新编译程序。

有些编译器(如GCC)允许交叉编译,但设置起来并不容易。可能最容易交叉编译的系统是Linux(有几个开源项目已经从Linux到Windows进行了交叉编译)。

在GUI应用程序的情况下,这取决于语言—如果您坚持使用c++, Qt或wxWindows可能是一个合理的选择,在本机窗口系统上提供抽象层。

如果你可以使用Java,它使生活更简单,然而窗口系统是Java的,而不是本地的。

另一种可以考虑的语言是FreePascal w/Lazarus——它有一个非常好的GUI设计器,可以在每个平台上编译成本机窗口系统(Windows上的WinAPI, OSX上的Cocoa和Linux上的GTK)。

不确定c++是否是必须的,但是Adobe Air是一个很棒的桌面跨平台开发环境,它在移动开发方面也在不断发展。如果你需要一个主要应用程序使用Adobe Air部署到多个桌面操作系统的示例,只需查看tweetdeck http://www.tweetdeck.com/

我强烈建议你也看看Flex和Flash Builder如果你走这条路。

在编写跨平台程序时,我要强调两个独立的问题——如何使您的代码可移植,以及如何安排它在各种不同的平台上构建。

就构建方面的事情而言,我会考虑像CMake (http://www.cmake.org)这样的跨平台构建系统。你基本上编写一个脚本,CMake将为特定平台生成适当的项目文件/makefile。然后像往常一样在每个平台上构建程序。例如,在Windows上,您可以使用CMake为您生成一个Visual c++项目,然后使用Visual c++实际构建您的可执行文件。在Linux上,你可以使用CMake生成一个makefile,然后使用g++构建可执行文件。

另一个方面是如何使您的代码可移植——关键是编写符合c++标准的代码,并使用本身可在您感兴趣的平台上移植的库。您可以(有时可能需要)为每个不同的平台编写特定于平台的代码——如果您这样做,您应该将其隐藏在可移植接口后面,并让其余代码使用该接口。

是的,当你使用c++时,你需要为每个版本编译。

唯一能阻止你编译程序的东西,例如,在Mac上为Windows编译程序,就是找一个工具来做这件事。这是可能的,但问题是找到工具集。

还可以使用虚拟机运行不同的操作系统,并在同一台机器上为所有平台编译代码。

Java在Windows、OS X和Linux上运行

相关内容

  • 没有找到相关文章

最新更新