我们有一个在PC上工作的OpenGL项目(在Wine下的MacOS和Linux上也可以工作),我们想尝试交叉编译到平板电脑上。DelphiXE2/XE4提供了对iOS的支持,但还没有安卓系统,从iOS的实现历史来看,可能需要1-2年的时间。现在我们开始寻找其他的可能性,这将使我们能够保留大部分的Pascal代码库(80k行)。所以这就是Oxygene的问题:
有没有用Oxygene制作的可以在PC/MacOS/iOS/Android上交叉编译的OpenGL应用程序的例子?
如果没有,还有什么替代方案(除了拉撒路)?
发布于 2013-05-29 21:14:05
AFAIK没有。
即使是low-level cross-platform RTL也没有完成。这将是在以跨平台方式(即使用相同的源代码)访问高级库(如OpenGL )之前必须完成的第一个强制性步骤。
因此,使用Oxygene,您有一个很棒的交叉编译器,但您必须使用每个平台上可用的RTL。
您可以与两个object-pascal编译器进行比较:
带有FreePascal的
发布于 2013-05-29 16:17:25
Oxygene不会尝试与Delphi保持源代码兼容。更重要的是,各种Oxygene风格使用的运行时库与Delphi使用的运行时库完全不同。所以你不会找到任何真正的库,它们只有一个源代码,可以在Oxygene和Delphi上编译。
RemObjects在不同平台上开发Oxygene的方式非常有趣,与Embarcadero使用Delphi所采取的方法完全不同。
使用Delphi的目标是,您可以为所有平台进行单一源代码开发。这是由FireMonkey框架实现的,该框架为所有平台提供了一个公共接口。显然,你需要改变应用程序的一些元素,以解决设备差异。
使用Oxygene,每个平台都是单独定位的。因此,对于Windows,运行时是.net。对于Java,它是JVM;对于Apple平台,您的目标是Cocoa。
所有这一切意味着,你不能期望用Oxygene编写一个GUI应用程序,并让它在多个平台上工作。
因此,你不仅可以在Delphi和Oxygene之间单一来源你的应用程序,你也不能轻易地单一来源多个Oxygene目标。
现在,您可以毫不费力地移植到Oxygene或FPC。但维护单一来源可能意味着更多的努力。这种努力是否值得,尚有争议。从长远来看,你会想要一个代码库的Delphi,FPC,Oxygene,甚至是一些根本不同的东西。但是你不会想让你的代码分散在多种语言上。
发布于 2013-05-29 17:39:37
您可以在Oxygene中编写或拥有OpenGL层,就像在sugar open source project中一样使用mapped types。
听起来很酷。在你的代码中,你只需要使用一个类,这个类在编译过程中直接映射到底层的平台类方法,而没有该层的开销。
IMHO,当Oxygene不断增长时,我们会找到很多这样的“糖层”,并在任何地方编写一次编译就会更接近:)
编辑:
https://stackoverflow.com/questions/16806810
复制相似问题