繁体   English   中英

编写跨平台程序

[英]Writing a cross-platform program

我怎么能写一个在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上运行

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM