我想将我的C/C++应用程序移植到OS X.
我没有Mac,但我有Linux和Windows.这有什么工具吗?
对于Linux,有一个预构建的GCC交叉编译器(来自公开提供的Apple修改后的GCC源代码).
https://launchpad.net/~flosoft/+archive/cross-apple
2015年更新
经过这么多年,行业标准IDE现在支持OSX/iOS/Android.
http://channel9.msdn.com/Events/Visual-Studio/Connect-event-2014/311
Embarcadero的RadStudio还支持在Windows上构建OSX/iOS/Android应用程序.
此答案由托马斯还提供了一个交叉编译工具.
对于所有这些选项,您仍然需要一个真正的mac/i设备来测试应用程序.
我创建了一个名为OSXCross的项目,旨在从Linux中定位OS X(10.4-10.9).
它目前支持clang
3.2到3.8(主干)(你可以使用你的dist clang
).
此外,您还可以构建最新的香草GCC
(4.6+).
LTO也适用于两者clang
和GCC
.
目前使用cctools-870和ld64-242.
https://github.com/tpoechtrager/osxcross
似乎已经编写了一些脚本来帮助您为Mac设置交叉编译; 我不能说它们有多好,或者对你的项目有多适用.在文档中,他们参考了10.4的交叉编译这些指令,以及这些指令用于交叉编译10.5; 这些说明可能比脚本更有用,具体取决于脚本符合您的需求的程度.
如果您的程序是免费或开源软件,那么您可能希望创建一个MacPorts端口文件(此处的文档),并允许您的用户使用MacPorts构建您的程序; 这通常是在Mac OS X上安装便携式免费或开源软件的首选方式.过去已知MacPorts可以在Linux上运行,所以有可能在Linux上开发和测试你的Portfile(虽然它显然需要在Mac上测试).
获取" VMware Player "
获取" Mac OS X vm image "
在新操作系统上编译/调试/集成并测试您的代码,以确保一切正常
当您尝试在多个平台上运行时,您必须在目标平台上编译/运行/集成/测试.你不能只在一个平台上编译/运行然后说"哦,它应该在另一个平台上工作相同".
即使使用像Java这样非常好的跨平台语言,您也会遇到问题,而在其他平台上它将无法完全相同.
我发现尊重我的时间/生产力/能力以在多个平台上快速迭代的唯一方法是使用其他平台的VM.
还有其他解决方案,如双启动和我没有提到的解决方案,但我发现它们不尊重我的生产力/时间.
以双启动为例:
我在OS 1上做了一个改变
重启进入OS 2
忘了OS 1上的东西
重启进入OS 1
在OS 1上进行更改
重新启动到OS 2 ... 再次 ...
BAM有30分钟的时间,我没有做任何有成效的事情.