使用Mac进行跨平台开发?

时间:2008-10-18 14:25:18

标签: language-agnostic macos cross-platform

谁使用Mac进行跨平台开发?

通过跨平台我的意思是你可以编译到目标Windows或Unix(不一定同时)。我知道这也与编写可移植代码有很大关系,但我对人们使用Mac OS X开发软件的经验更感兴趣。

我知道有一系列的IDE可供选择,我可能会使用Eclipse(我喜欢GCC工具链)但是Xcode似乎很受欢迎。它可以如上所述使用吗?在紧要关头,我总是可以使用VirtualBoxVMware Player或者并行来虚拟化以使用Visual Studio(或双重启动)。说过我对任何其他建议的编译器开放(最好是使用GCC的IDE。)

另外,有Mac可用范围,您会推荐哪一款?我更喜欢一台笔记本电脑(因为我已经有一台台式机),但我不确定合理的规格。

如果您目前正在使用Mac进行开发,我很想听听您在Mac上开发的内容以及您喜欢和不喜欢的内容。

我主要是用C / C ++ / Java开发。我也希望尝试使用BoostQt,因此我有兴趣了解任何(潜在的)兼容性问题。

如果你有任何其他提示我会爱你,你会听到你要说的话。

16 个答案:

答案 0 :(得分:10)

好吧,使用Mac只是(折扣OSX86)实际上能够在同一硬件上在Mac + Windows + Linux上进行测试的唯一方法。话虽这么说,如果这是你唯一的理由,我不会走那条路。如果你更喜欢在Windows环境中编程,我会说你在Windows中做你的工作,并且有一台Mac Mini,甚至可能是你用来试用便宜的旧版本来测试你的软件。

答案 1 :(得分:8)

Eclipse在Mac上运行并得到很好的支持。例如,它是在Mac(以及所有其他平台)上开发Android的推荐环境。

XCode的目标是OS X本机开发,你可以将它与Windows的交叉编译纠缠在一起,但是你会非常反对这一点。

我在XCode中进行了一些开发,但主要是我是.NET开发人员,我在Mac上使用VMWare。这可能听起来有些倒退,但在iMac上运行在VMWare上的Windows XP盒子绝对过得很快(我有4Gb的RAM)我可以非常快速地创建和修改用于测试的虚拟机(例如:Vista,奇怪的Windows XP设置) 。最重要的是,与Windows相比,使用Mac的日常感觉就像幸福一样(直到大约15个月前我从未使用过Mac,我永远不会回到永久的Windows桌面)。

答案 2 :(得分:5)

一年前我已经改用mac作为我的主要开发机器而且从未回头。

我要提到的一件事是,如果您在多个平台上开发,您通常会编写更好的软件。我不时发现,有些代码可以在特定平台上运行,而在另一个平台上运行则会失败。大多数情况下,这是由于我的一些错误而不是软件错误。

所以在我的书中 - 跨平台开发强制执行更多的正确性。

答案 3 :(得分:5)

我在家中使用旧的Mac Mini进行虚拟机内的Windows开发。我对它有很好的体验。如果我全屏显示,那就感觉就像桌面一样 - 性能非常好。

您可能会发现这些帖子很有趣:

Minimum hardware for effective mac development

Mac virtualization: VMWare Fusion or Parallels?

Using 3-D in Virtual Machines

答案 4 :(得分:5)

我在MacBook Pro上进行所有跨平台开发,主要使用REALbasic。为了在Windows和Linux上进行测试,我使用VMware Fusion,它与REALbasic附带的远程调试器配合使用。

在我进行与.NET相关的开发时,我曾经使用Windows设置Boot Camp。 VMware和Parallels非常快,但无法与本机启动操作系统相匹配。我没有机会在Mac OS X中广泛尝试MonoDevelop,但除了缺少GUI设计器外,它看起来可能运行良好,我可能会考虑将来可能用于任何未来的.NET项目做。

我更喜欢只有一台可以运行所有操作系统的计算机,因为它的桌面空间更小,升级和管理的硬件更少,而且更容易随身携带所有操作系统。

现在任何Mac都可以很好地处理运行Windows和Linux的问题。你需要的最重要的是大量的RAM。 Mac现在可以处理至少8 GB,我建议将其作为起点(我有6 GB)。

答案 5 :(得分:4)

简单回答推荐问题:如果您需要便携式设备,新Macbook(低端型号)应该是一款出色的开发机器。有趣的是,我曾经拥有Mac mini,因为它是我能买得起的,而且它在大多数情况下都非常出色。我甚至把它放在家里和办公室之间(在办公室保留另一台显示器/键盘/鼠标,但我现在甚至做了MBP)并且它很棒。我甚至没有注意到它在我的背包里。

编辑:没有什么可以阻止你在Mac上进行双重或三重启动,以及在Mac上运行Windows / * nix / OS X中的所有开发。

答案 6 :(得分:3)

我肯定会给Mono看一看。它具有Qt和GTK的跨平台绑定。您还可以访问MonoDevelop,这可以实现跨越式发展。

如果您对此不感兴趣,我要提到的一点是VMWare和Eclipse可以很好地协同工作。 VMWare Workstation Professional附带一个Eclipse插件,允许远程调试,只需点击几下即可进行多操作系统部署测试。我当然建议你免费试用,看看它是否适合你。

Mac是一个很好的平台。大多数未从Linux移植到本地运行的东西在X11之上运行良好。

答案 7 :(得分:3)

如果您正在寻找单一构建系统,Mac可能是您的最佳选择,因为您可以使用GCC交叉编译到Windows和Linux。

有些编译器从Linux开始针对Darwin / OSX,但是你不会使用这种方法获得任何Cocoa或Foundation库。至少使用MinGW,您可以访问Windows平台SDK的很大一部分。

答案 8 :(得分:2)

另一个选项是Cocotron。它在Mac OS X上运行,包括面向Windows,Linux和Solaris的交叉编译器,一个适用于所有三个的Objective-C运行时和可移植的Foundation框架,以及一个适用于Windows的AppKit框架。

答案 9 :(得分:1)

取决于您想要开发的内容。如果是GUI应用程序,您可能希望在目标平台上进行开发和测试。对于Java相关的开发(特别是企业)来说,在Mac上工作非常棒,特别是因为Apple不久前发布了jdk1.6。 Eclipse和Netbeans是我在Mac和Linux上使用的IDE。

答案 10 :(得分:1)

我使用我的Mac进行跨平台编程。但是,我的项目相当小,很少包含GUI。

我已经设置了虚拟机来进行编译。至于IDE,我的经验表明,通常需要将“本机”项目文件与其他开发人员共享。因此,我主要在XCode中开发,最后在Visual Studio中创建一个项目,在Linux中创建一个Makefile。但是,如果可能的话,我会设置所有项目,以便它们共享源文件。

Eclipse项目与Linux和OSX完全兼容,但不兼容Windows。

正如其他人已经提出的那样,我建议您使用最熟悉的IDE和操作系统,然后将其移植到其他平台。

根据您的项目规模,我会推荐iMac或MacBook Pro进行跨平台开发。此外,虚拟机可能要求很高,所以一定要有足够的内存。

答案 11 :(得分:0)

多年来我使用Qt来进行跨平台开发(仅仅因为我喜欢它)。我鼓励你look at it.事件模型(SIGNAL / SLOT)是不同的,但一旦你开始使用它就一点都不坏。

答案 12 :(得分:0)

Here你会发现一篇关于LinkedIn正在100%开发的有趣帖子......

答案 13 :(得分:0)

我使用MacBook进行跨平台开发,但我没有为其他目标进行交叉编译。考虑到如今运行多个平台的成本有多便宜,这是不值得的麻烦。您既可以使用像VMware这样的虚拟化产品,也可以使用辅助盒来为Windows和Linux进行多重启动。您绝对必须在每个平台上都拥有完全自动化的构建。 Joel is always right.;)

使用外部UI来疏远客户是一个很大的风险,因此我建议构建一个通用的后端和特定于平台的前端。我对Qt没有任何经验,但我已经将Tk用于跨平台C ++应用程序。它不会有效,只是我有一个专属的企业观众很高兴只是以低成本在多个平台上安装该软件。

答案 14 :(得分:0)

我用C ++编写了一个小型的跨平台UML编辑器,我的硕士论文学位,我在Xcode中用Mac编写了大部分代码:

http://remproject.org/

为了管理Windows和Linux中的构建,我使用了CMake,它在每个平台中生成了Xcode,Visual Studio和Makefile项目。

http://cmake.org/

我还使用了两个库,Juce和POCO,前者用于GUI,后者用于特定功能。所有平台都静态链接。

在我看来,你可以用很多方式编写跨平台代码,这是其中之一,我很高兴,我可以很快地完成这项工作,并获得学位:)

答案 15 :(得分:0)

我已使用Mac开发C#/。NET应用程序,并确定它正常。 Visual Studio for Mac (重新命名为Xamarin Studio)将安装所有必需的依赖项(.NET Core,Mono等),让您在一个地方构建,运行和调试应用程序。

关于进一步的路径,您可以选择:

  • .NET / Mono
  • .NET Core(macOS,Windows,Linux)-控制台应用程序,Web /后端,通用库(https://github.com/maxim-saplin/NetCoreStorageSpeedTest
  • Xamarin(macOS,iOS,Android)-共享逻辑并为每个平台创建自定义UI项目。
  • Xamarin.Forms(macOS,Windows,Linux,Android,iOS)-在XAML中创建单个UI和逻辑(在某些情况下,需要Xamarin.Forms控件限制的特定于platfrom的调整),并针对所有platfroms({ {3}})。