views:

2150

answers:

9

I would like to port my C/C++ apps to OS X.

I don't have a Mac, but I have Linux and Windows. Is there any tool for this?

+4  A: 

You will definitely need OS X somehow. Even if you don't own a Mac, you can still try some alternates.

Pablo Santa Cruz
+1  A: 

You would need a toolchain to cross compile for mach-o, but even if you had that, you won't have the Apple libraries around to develop with. I'm not sure how you would be able to port without them, unfortunately.

Joel Levin
+3  A: 

There appears to be some scripts that have been written to help get you set up cross compiling for the Mac; I can't say how good they are, or how applicable to your project. In the documentation, they refer to these instructions for cross-compiling for 10.4, and these ones for cross compiling for 10.5; those instructions may be more helpful than the script, depending on how well the script fits your needs.

If your program is free or open source software, then you may wish instead to create a MacPorts portfile (documentation here), and allow your users to build your program using MacPorts; that is generally the preferred way to install portable free or open source software on Mac OS X. MacPorts has been known to run on Linux in the past, so it may be possible to develop and test your Portfile on Linux (though it will obviously need to be tested on a Mac).

Brian Campbell
A: 

There are a few cross platform frameworks you can consider to target Mac OS X.

QT is a popular one.

wxWidgets is what Audacity uses.

Of course this requires some additional effort.

John Fricker
+1  A: 

Apple development is a strange beast unto itself. OS X uses a port of GCC with some modifications to make it 'appley'. In theory, it's possible to the the sources to the Apple GCC and toolchain as well as the Apple kernel and library headers and build a cross compiler on your Windows machine.

Why you'd want to go down this path is beyond me. You can have a cheap Mac mini from $600. The time you invest getting a cross compiler working right (particularly with a Windows host for Unix tools) will probably cost more than the $600 anyway.

If you're really keen to make your app cross platform look into Qt, wxWidgets or FLTK. All provide cross-platform support with minimal changes to the base code. At least that way all you need to do is find a Mac to compile your app on, and that's not too hard to do if you have some technically minded friends who don't mind giving you SSH access to their Mac.

Adam Hawes
A: 

The short answer is kind of. You will need to use a cross platform library like QT There are IDE's like QT Creator that will let you develop on one OS and generate makefiles for others. For more info on cross platform development check out the cross platform episodes of this podcast Note the series isn't over and new episodes appear to come out weekly. As other answers explain you can probably compile for a Mac on windows or Linux but you won't be able to test your applications so you should probably spend the $600 for a Mac if you’re doing professional programming, or if you’re working on open source software find a developer with a Mac who will help you.

Jared
+1  A: 

There are a few cross-compiler setups, but nearly all of them are meant for distcc-style distributed compiling. To my knowledge there is no way to directly target the Mac platform without actually having a Mac. The closest you can get without resorting to QT or wxWidgets is OpenStep with GNUStep or similar, but that's not a true Cocoa platform, just very close.

greyfade
+2  A: 
  1. Get "VMware Player"
  2. Get "Mac OS X vm image"
  3. Compile/Debug/Integrate-and-test your code on the new OS to make sure everything works


When you are trying to get something working on multiple platforms you absolutely must compile/run/integrate/test on the intended platform. You can not just compile/run on one platform and then say "oh it should work the same on the other platform".

Even with the a really good cross-platform language like Java you will run into problems where it won't work exactly the same on the other platform.

The only way I have found that respects my time/productivity/ability-to-rapidly iterate on multiple platforms is to use a VM of the other platforms.

There are other solutions like dual-boot and ones that I haven't mentioned but I find that they don't respect my productivity/time.

Take dual-booting as an example:

  1. I make a change on OS 1
  2. reboot into OS 2
  3. forget something on OS 1
  4. reboot into OS 1
  5. make a change on OS 1
  6. reboot into OS 2 ... AGAIN...

BAM there goes 30 minutes of my time and I haven't done anything productive.

Trevor Boyd Smith
When 3 boots take 30 minutes, you need new hardware; and probably the ability to access and edit one OS's filesystem from another. But I understand the sentiment and also prefer VMs because they allow me to mostly treat them as dedicated physical machines.
Roger Pate
A: 

I found this small documentation on the net: http://devs.openttd.org/~truebrain/compile-farm/apple-darwin9.txt

This describes exactly what you want. I am interested in it myself, haven't tested it yet though (found it 10 minutes ago). The documentation seems good, though.