Cross Platform Compiling


#1

Still all a bit new to this but delighted to have stumbled across JUCE. Used to know how to program in Pascal, want to learn something a bit more current and have a strong interest in music so JUCE is just what I need!

So, courtesy of the demos and Introjucer (brilliant!) I have a working VST plugin that shows whatever text I want, but as well as building a dll for windows, I hope to also have linux & OSX covered, so this is just about process…

If I build (using VS2010Express) I get a windows dll, but how do I get Linux & OSX, Can it be done from within VS2010 or do I have to have a linux box running (I do have one) and an iMac (don’t have one!)

Cheers
Mark


#2

Well, last time I checked, Microsoft compilers didn’t yet support OSX or linux targets (!!)


#3

Yes, thought that would be the answer!!

So if I move to something like CodeBlocks… I could do it all there?


#4

So how are you planning to test and debug these OSX/linux binaries that your hypothetical cross-compiler produces? Will you just release them without testing?


#5

I’m just playing/learning so nothing going to be released yet! I have my Windows PC and a Linux box and have access to an iMac if I need it, so if I did ever release anything it would be tested. I may never ever release anything anyway. For now it’s just for my own amusement and to see what might be possible.

At this stage I’m just playing and interested. If I know that I can code in VS2010 but use that same code ‘wherever’ to have things work on other platforms, then at least I know in advance that it has a chance of working. If on the other hand, working in VS will cause me problems because its from Microsoft, I will investigate a cross-platform IDE right from the start (well, as close to it as I can 'cos now I have already started!). I only picked VS because Introjucer made it very easy by creating the project for me!

CodeBlocks says it’s a crossplatform IDE and I guess that means I should be able to run it on anything I want to, and to compile I guess I would load up my code on whatever machine/OS I need to, with whatever compiler.

I will have a go and see what happens!


#6

Well, if you’re learning don’t waste your time worrying about cross-compiling. It might sound like a good idea, but in practice it doesn’t work, and nobody does it.

And I heartily recommend avoiding CodeBlocks - I don’t ‘officially’ support it for juce, so you’re on your own with any problems you might (and almost certainly will) hit. Just use the normal tools and get on with learning to write good code.


#7

OK!


#8

Having said that - CodeBlocks on Linux is a good choice. I wouldn’t bother on Mac or Win.

And I used to create Windows binaries quite happily on my Mac with CodeWarrior. You could remote debug on a Windows machine. It saved having to move all your code across and deal with two environments.

RealStudio (RealBasic) allows something similar. To be honest, if I could make Windows binaries from my Mac now, I would.

Bruce


#9

My solution is Windows/Linux in a VM, sharing a code folder that lives on my Mac. No need to copy any code, just open Visual studio and hit F5. I often edit the code in Xcode while debugging it in MSVC.


#10

What are you using for vm? Fusion, Parallels, VirtualBox…?


#11

Parallels. I tried the others, but Parallels seems to do the best job.


#12

You read my mind Jules.


#13

As long as you stick to using the Juce framework you’ll be good. Visual Studio won’t force you to use anything Microsoft specific. Use the introjucer to create and manage your project files. If you want to build it on the mac just copy the code to that machine and use the project file for Xcode (created by the introjucer). It should compile fine. Linux I don’t use, but it should be something of the same process.

HTH, and have fun exploring Juce!
Graeme


#14

My solution is Windows/Linux in a VM, sharing a code folder that lives on my Mac. No need to copy any code, just open Visual studio and hit F5. I often edit the code in Xcode while debugging it in MSVC.[/quote]

Really? That works? Last time I tried that (which was a few years back) VS would get itself all kinds of messed up. As far as I could ever ascertain it was stumbling over time stamps on shared folders not looking like proper Windows ones. I think Parallels was sharing by way of SMB. Admittedly I’m on a newer VS, and I switched to Fusion in the interim, but I’ve always been scared to try again.

Not having BOOST, DCMTK, ITK, and VTK duped across five different VMs appeals.


#15

Yep, it works fine. I originally tried to use VirtualBox and VMWare, and they did have some timestamp problems, but Parallels manages to do a good job of it.


#16

With VMware (probably the others as well) there’s an option to sync the guest OS time to the host machine’s clock.

Should fix any inconsistencies.


#17

oooo… (shrug, fighting off a compulsion to vomit). You can’t really mean you prefer Xcode over VS for editing ?? :slight_smile:


#18

oooo… (shrug, fighting off a compulsion to vomit). You can’t really mean you prefer Xcode over VS for editing ?? :)[/quote]

No - but it can be a pain to do a lot of typing when my OSX keyboard doesn’t get mapped correctly to Windows, and if I’ve just been doing some work in Xcode I’ll already have all my files open, with undo buffers, etc. But I totally agree that it’s rubbish compared to VS.


#19

After six years, is the answer the same to the original question?


#20

You can technically hook Visual Studio to cross-compile on macOS and iOS, and even making Linux/Clang builds now.

The Projucer doesn’t support any of this, though. Be warned that the hooks are a bitch to configure and get straightened out - basically, venture at your own risk!