用C ++编写Mac OS X应用程序的完整解决方案

时间:2009-03-11 12:58:32

标签: c++ xcode macos ide

我正在为我当前的盒子寻找替代品,Mac OS X看起来非常吸引人。

我感兴趣的主要领域是C ++编程。目前我正在使用Eclipse + CDT和g ++来创建我的软件;有时它是KDevelop。

我知道Mac的主要IDE是Xcode,主要语言是Objective-C。如果可能的话,我想避免学习Objective-C。我也听说过/从C ++访问Mac OS X API时存在一些问题。

因此我的问题: 开发/调试/测试C ++应用程序的完整解决方案是什么,可以访问Mac OS X的所有硬件方面(UI,声音,视频/加速视频等)?

编辑:Xcode与Eclipse + CDT组合相比如何?如果这种比较完全可能......

14 个答案:

答案 0 :(得分:15)

如果您想使用C ++而不是Objective-C,并且仍想避免使用中间层库(例如QT),则可以使用Carbon

我会使用XCode而不是Eclipse,因为Eclipse在处理硬核C / C ++编程(编译,调试,测试)时速度较慢。

当我第一次开始在Mac OS X中编程时,我就在你现在的同一页面。我认为坚持使用我所熟悉的语言(C ++)并使用较旧的库(Carbon)会更好。由于某种原因,我现在不记得了,我强迫自己进入Cocoa(Objective-C)。回顾过去,我认为这是一件好事,因为:

  1. Objective-C与C ++没有根本的不同
  2. 可可比碳更好,更快,更简单
  3. iPhone Dev仅限Cocoa(不支持Carbon)

答案 1 :(得分:10)

你应该避免学习Objective-C和Cocoa。事实上它应该是你做的第一件事。除非你在Smalltalk中有扎实的背景,否则你不太可能接触到设计良好的大型(一套)框架。

答案 2 :(得分:7)

Objective-C并不难。如果您了解C ++,那么您需要花费一到三天的时间来学习这些约定。

Cocoa API和约定需要更长时间,但这些会及时到来。

祝你好运!

答案 3 :(得分:5)

除非你正在考虑使用像QT这样的中间层,否则我认为你几乎坚持使用Objective C与GUI的部分接口,就像它是他们的母语一样。

也就是说,有人提到您可以轻松地混合Objective-C代码和C ++代码,这样您仍然可以用C ++编写大部分应用程序。

我主要是一名C ++程序员,但我总是涉足其他语言而且我玩过XCode(是的,我有一台Mac)。我喜欢它,它有点不同但是作为一种将OS X GUI固定在一起的方式,如果你不喜欢XCode,那么其余的就在你和你最喜欢的编辑器之间。

答案 4 :(得分:5)

我一直在使用Objective-C ++来编写UI,这使得使用C ++编写应用程序后端变得更加容易。它似乎对我很好。 Objective-C& Objective-C ++很容易上手,这让我可以继续使用我来之不易的C ++知识。

答案 5 :(得分:2)

使用OS X中的gcc或g ++没问题。无论如何,XCode安装都会为您提供这些编译器,如果您真的想要,可以加载一个x服务器实例并让KDE正常工作。我自己喜欢XCode编辑器。 Eclipse也适用于OS X,因此您应该能够使用当前环境。

我之前使用过OS X框来交叉编译从PPC arch到ARM arch的C代码,没有任何问题。它只是另一个* nix风格的系统,因此您熟悉的所有工具都已经存在,如果不存在,只需使用finkmacports自行获取。

此外,如果您真的想使用C ++开发GUI OS X应用程序,您可以始终使用Carbon而不是Cocoa。这是一个完全可行的选择,只是略微弃用。

答案 6 :(得分:2)

Mac OS X上的Carbon实际上已被弃用 - 它不会也不会支持64位应用程序。

如果您真的想使用c ++,请使用Qt Creator

现在免费且trolltech SDK包含Qt 4.5,虽然它是一个c ++框架,但它内部使用Objective-C与MAC OS X进行交互,因此您不受Carbon的限制。

缺点是trolltech库不是mac上的标准库,你必须为它们提供你的应用程序。

答案 7 :(得分:2)

C ++与Xcode的效果非常好。如果你想要cocoa,你可以学习gui层的最小(并且我的意思是极少)Obj-C的数量,并且你的代码大部分都是用C ++编写的。

另一个选择是使用其中一个脚本语言框架来连接Cocoa API(例如PyObjc)和C ++中的大部分逻辑。

第三个也是最后一个选项是使用跨平台gui工具包,如Qt4。如果您希望使您的图书馆跨平台,那么这将是您的目标。

我建议不要与Carbon合作。这绝对是一个垂死的野兽。你也可以使用上面的组合提供一个库和你的C ++代码,然后创建gui特定的UI来链接它们。

答案 8 :(得分:1)

我同意Pablo Santa Cruz并且想补充一点,在同一个应用程序(和相同的源文件)中混合使用Objective-C和C ++是微不足道的。这被称为Objective-C ++,并讨论了in this article

XCode使用GCC进行编译,因此您可以随时准备好Objective C,C和C ++。

答案 9 :(得分:0)

我自己没有在OSX上使用它(我可以在Windows上推荐它),但Code :: Blocks C ++ IDE是使用并支持跨平台的wxWidgets GUI库实现的。 OSX支持它 - 请参阅this page

答案 10 :(得分:0)

我建议你坚持使用最适合自己的IDE。就个人而言,我第一次使用Xcode并且拒绝放弃Eclipse时,我讨厌Xcode。几天后,我热身到Xcode,不介意不时使用它。但是,我仍尽可能使用Eclipse。

请记住,你不能只使用C ++编写Cocoa应用程序,你需要深入研究Obj-C。碳应用程序看起来或行为不像Cocoa应用程序。大多数人都不会介意,但这是值得思考的问题。我从java / C#跳进Obj-C没有任何问题。这种语言需要一点点习惯,但这并不是很困难。

答案 11 :(得分:0)

如果您真的想在Mac OS X上使用C ++,请使用SDL / wxWidgets / Qt之类的内容。

可以选择将Objective-C与C ++结合起来,称为Objective-C++。您可以将它用于所有模型,只需使用Objective-C即可,如果没有Foundation-framework,这是不可能的。

作为最后一个选项,我会想到Carbon。这是一个在OSX之前使用但在Mac OS X上运行的本机框架。问题是,它不支持更新的技术,我认为OS X的下一个版本Snow Leopard不会支持它根本就没有。

Apple说:

  

Carbon使C / C ++开发人员能够   利用Mac OS X的功能,   包括Quartz 2D图形   库,高效的事件处理   机制和多处理   支持。另外,其他   行业标准的C / C ++ API   可供Carbon开发人员使用,   提供对诸如此类服务的访问   OpenGL绘图系统,Mach   微内核和BSD操作系统   服务。

不要指望Carbon应用程序看起来100%原生,而且编程要比Cocoa复杂得多。

但是,我推荐learning Objective-C,它并不难,并且有许多强大的框架,如CoreData,CoreGraphics等。

答案 12 :(得分:0)

对于一些小型爱好项目和我正在制作的iPhone应用程序,我使用的是客观C ++和“真正的”C ++。 XCode很好地支持两种语言的混合。我使用客观C / Objective C ++作为用户界面,并作为OSX框架和我自己的代码之间的薄层。到目前为止,这已成为一种很好的工作方式。

答案 13 :(得分:0)

我现在用于Mac开发的开发环境是QTCreator,它是一个免费的IDE,可以在QT中使用gcc作为编译器进行开发。它提供了我需要的所有功能,它是跨平台的(我正在开发的应用程序的一个要求)。

我不得不说我印象非常深刻。我对这样一个专注(专为QT设计)和最近的IDE没有寄予厚望。环境简单但功能强大(包括GUI编辑),并且具有我见过的更好的代码完成。在这种环境下轻松编程,不要错过一点Visual Studio。

真的值得一试。