首先,您应该尝试确保您的 GUI 代码和非 GUI 后端代码被干净地分离到 GUI 应用程序和库中(如果它们还没有的话)。这使得测试更容易,也更容易实现命令行界面、Web 界面等。这些库(带有对象和过程的单元文件)在大多数情况下应该可以在 FreePascal 上轻松编译,但是您应该检查和调试非 GUI 代码第一的。
一旦解决了这个问题,就该看看你的 GUI 了。如果您使用大量封闭源代码的第 3 方商业组件,那么您可能无法轻松转换 GUI。如果您主要使用库存组件和/或已移植到 Lazarus 的组件,那么您确实可以转换 GUI 并按原样使用它。
请注意,由于 Mac OS 和 Linux 程序通常看起来不同,您可能需要考虑这一点,具体取决于您的应用程序。可能的方法包括: 1. 即使在 Windows 上也使用 Lazarus,并为所有平台使用相同的 GUI 代码。2. 仅在 OS X 和 Linux 上使用 Lazarus,并自定义 GUI 在转换后看起来有点原生。3. 为 OS X 编写本机 GUI(使用 Cocoa 和 XCode),然后链接到您的 Pascal 代码以进行非 GUI 处理。这种事情在 Linux 上不太必要,但是您可以选择用于 LCL (VCL) 后端的工具包。
每种方法都有强烈的支持者,但哪种方法正确取决于您的“情况”和您的目标。
如果您的主要兴趣是 OS X,请考虑加入 MacPascal 列表。
Wine 是一个巨大的矫枉过正,除非你需要在明天几乎不做任何修改的情况下推出一个 Linux/OS X 应用程序。(在这种情况下,为什么不直接使用 VMWare?)