|
- <?xml version="1.0" encoding="windows-1250"?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
- <meta http-equiv="Content-Language" content="en-us" />
- <meta name="description" content="Raw Material Software" />
- <meta name="keywords" content="audio, music, juce, tracktion, c++, sequencer, library, programming, software, julian storer$otherkeywords" />
- <meta name="robots" content="index,follow" />
- <title>JUCE - installation and compiling</title>
- <link href="rawmat.css" rel="stylesheet" type="text/css" media="all" />
- </head>
-
- <body>
- <div class="pageholder">
-
- <div class="banner">
- <a href="http://www.rawmaterialsoftware.com">
- <img src="images/rms_logo.gif" alt="raw material software" title="raw material software"/></a>
- </div>
-
- <p><a href="#intro">Introduction</a> - <a href="#license">License</a> -
- <a href="#install">Installation</a> -
- <a href="#buildvc">Building with Visual Studio</a> -
- <a href="#buildvc6">Building with VC6</a> -
- <a href="#buildxcode">Building with XCode</a> -
- <a href="#buildlinux">Building on Linux</a> -
- <a href="#buildandroid">Building with Android</a> -
- </p>
-
- <h1>JUCE</h1>
-
- <h2><a name="intro"></a>Introduction</h2>
-
- <p>JUCE is an all-encompassing C++ class library for developing cross-platform applications and plugins.</p>
- <p>For lots more help and information, please visit the <a href="http://www.rawmaterialsoftware.com/juce">JUCE website</a>.</p>
- <p>A complete set of class documentation is available <a href="http://www.rawmaterialsoftware.com/juce/api/index.html" target="juce api">here</a>.</p>
-
- <h2><a name="license"></a>License</h2>
-
- <p>JUCE is released under the <a href="http://www.gnu.org/copyleft/gpl.html">Gnu Public License</a>,
- which means it can be freely copied and distributed, and costs nothing to use in open-source applications.</p>
- <p>If you'd like to release a closed-source application that uses JUCE, commercial licenses are available
- for a fee - click <a href="http://www.rawmaterialsoftware.com/jucelicense.php">here</a> for more information
- on pricing and terms.</p>
-
- <h2><a name="install"></a>Installation</h2>
-
- <h3>Installing the source code</h3>
-
- <p>There are a few ways to install a copy of JUCE:</p>
- <ul>
- <li>You can download a zip file containing the last stable release from <a href="http://sourceforge.net/projects/juce/files/juce/">the JUCE downloads section on SourceForge</a></li>
- <li>Download the GIT repository: To grab the latest bleeding-edge version of the code, you can use the command:
- <br><code>git clone --depth 1 git://juce.git.sourceforge.net/gitroot/juce/juce</code></li>
- <li>Download via the Introjucer: The Introjucer is JUCE's tool for creating and managing JUCE projects, and it also
- includes a handy tool which lets you download the latest (bleeding-edge) version of JUCE without needing to install GIT. To use this,
- just download a binary of the Introjucer from <a href="http://sourceforge.net/projects/juce/files/juce/">SourceForge</a>,
- and run it - its 'update' menu contains an option to download JUCE.</li>
- </ul>
- <p>The JUCE source code all lives in a folder called, unsurprisingly, <code>juce</code>, which you can unzip
- and put somewhere on your system.</p>
-
- <h3>Building the demo applications</h3>
-
- <p>In the <code>juce/extras</code> folder, there are a few demo apps to get you started and to show off JUCE's features.
- Each one contains a folder called <code>Builds</code>, containing various projects for different compilers and platforms.
- These should all work straight out-of-the-box if you load them into the appropriate development environment. Some of them
- (e.g. the audio plugin demo) may require 3rd party libraries or headers to have been installed, but I've made sure that any
- include statements that may not be present have comments with a detailed explanation of what's going on, so if you hit a compile
- error, just have a look at the code it's pointing to and everything should become clear.</p>
-
- <h2>Creating a new application with the Introjucer</h2>
-
- <p>By far the easiest way to create a new cross-platform JUCE app (or audio plugin) is to let the Introjucer
- do the hard work of creating all your projects with the correct settings.</p>
- <p>You can either build the Introjucer yourself from the source (in <code>juce/extras/Introjucer</code>), or download
- a pre-built binary from <a href="http://sourceforge.net/projects/juce/files/juce/">SourceForge</a>.
- <p>If you run it and select the 'new project' menu item, it'll walk you through the stages in setting up an app or
- plugin project, and will automatically spit out a collection of project files for all the different platforms and compilers
- that you need.</p>
-
- <h1>Requirements for building on different platforms</h1>
-
- <h3><a name="buildvc"></a>Microsoft Visual Studio 2005 or later</h3>
-
- <p>JUCE projects should build and run with no extra set-up needed in all versions of Visual Studio from 2005 onwards.</p>
-
- <p>By far the easiest way to create a new project is by letting the Introjucer do all the hard work, as explained above. But
- if you really insist on creating one manually, here are a few tips:</p>
- <ol>
- <li>Create your new application project as an 'empty' WIN32 application - avoid saying yes to
- MFC or any of the other rubbish that Visual Studio might offer you.</li>
- <li>Make sure that your project has exception handling and run-time type information (RTTI) turned ON.</li>
- <li>Have a look at the example projects, demo projects, or the API documentation about the
- <code>JUCEApplication</code> class to find out how to create the application launch code.</li>
- </ol>
-
- <h3><a name="buildvc6"></a>Microsoft Visual Studio 6</h3>
-
- <p>JUCE can still be compiled with VC6, although support for this will be dropped at some point in the future...
- but here are some tips for getting it going:</p>
-
- <ol>
- <li>Install the latest Platform SDK from Microsoft.</li>
- <li>Set up your include and library search paths. The first few items on your include path
- should look like this (obviously you might have things installed in different places, but the
- order is important!):
- <pre>C:\Program Files\Microsoft Platform SDK\include
- C:\Program Files\Microsoft Platform SDK\include\crt
- C:\Program Files\Microsoft Platform SDK\include\mfc
- C:\mycode\juce
- ...</pre>
- And the library search path should begin like this:
- <pre>C:\Program Files\Microsoft Visual Studio\VC98\LIB
- C:\Program Files\Microsoft Platform SDK\lib
- C:\mycode\juce\bin
- ...</pre>
- </li>
- </ol>
-
- <p>Note that there's a rather lame bug in VC6 that causes an internal compiler error if you include
- filenames that are too long. This can get triggered if you put the juce folder in a deeply-nested
- directory (such as your user home directory). Unfortunately I think the only workaround for this
- is to move the source tree to a shallower directory.</p>
-
- <h3><a name="buildxcode"></a>XCode on OSX</h3>
-
- <p>Use XCode 3 or later. You might want to tick the option to install the 10.4 SDK if you want to build binaries
- that are backward-compatible with 10.4 and PPCs. If you're going to build for iOS, you'll obviously need the iOS version of XCode.</p>
-
- <p>The easiest way to create a new application is by using the Intojucer, but here are a few tips if you're mad enough
- to want to set one up manually:</p>
-
- <ul>
- <li>You'll need to add some or all of the following OSX frameworks to your "External Frameworks and Libraries" list,
- depending on what features your application uses:
- <pre>Cocoa.framework
- Carbon.framework
- IOKit.framework
- CoreAudio.framework
- CoreMIDI.framework
- WebKit.framework
- DiscRecording.framework
- QTKit.framework
- QuickTime.framework
- QuartzCore.framework
- AudioUnit.framework
- AudioToolbox.framework
- OpenGL.framework
- AppKit.framework
- CoreAudioKit.framework
- CoreFoundation.framework</pre>
-
- In future there may be other frameworks that you'll need to link with to support new JUCE features.
- (It should be pretty obvious from the link-time error when one of these is missing).
- </li>
- <li>If you need to link to the JUCE static library rather than using the amalgamated files, you'll need to drag-and-drop
- the <code>juce.xcodeproj</code> file into your project's "External Frameworks and Libraries" list. Then, expand this
- item in the treeview, and inside there'll be an item "libjuce.a" or "libjucedebug.a" - drag-and-drop
- this into the "link binary with libraries" phase inside the xcode target. When you select either a debug
- or release juce build these entries will (usually) update themselves to show the correct debug or release library
- name. If you want your project to automatically rebuild JUCE when you make changes to a JUCE file, you can
- also add JUCE to your target's "Direct Dependency" list (show information for the target, and this is on the
- "general" tab).<br/>Alternative ways of linking to JUCE would be to add the libjuce.a or libjucedebug.a library to
- your "External Frameworks and Libraries" list, or to add switch to the linker's command-line of either "-ljuce"
- or "-ljucedebug".</li>
- </ul>
-
- <h3><a name="buildlinux"></a>Linux with GCC</h3>
-
- <p>Most linux distros should come with the tools you need. You may need to install the development packages of
- freetype, X11 and pthreads if they're not already available.</p>
- <p>If you've enabled the <code>JUCE_USE_XINERAMA</code> option, then you'll also need to install the Xinerama package.
- And you'll need the <code>GL</code> and <code>GLU</code> libraries if you've enabled <code>JUCE_OPENGL</code></p>
- <p>The makefiles that are generated by the Introjucer can be run by "<code>make CONFIG=Debug</code>",
- or "<code>make CONFIG=Release</code>". You can also use "<code>make clean</code>" to delete the
- intermediate files.</p>
-
- <h3><a name="buildandroid"></a>Android</h3>
-
- <ul>
- <li>First of all, get yourself over to <a href="http://www.android.com">www.android.com</a>, and install the latest
- Android SDK and NDK. Follow their instructions for installing Eclipse, and get to the point where you can
- build and run some of the Android NDK demo apps in Eclipse before even thinking about trying to do anything with JUCE. The
- Android development environment is a hugely complicated mish-mash of random bits of software, lashed together with scripts,
- so don't expect a slick installation experience - be prepared to mess about. Once it's installed though, it all more-or-less
- seems to work..</li>
- <li>The only sensible way to create an Android JUCE project is with the Introjucer - doing it with Eclipse is a nightmare and if
- you want to do it manaually, good luck. The Introjucer will produce a folder containing a whole heap of files, and you can open the
- folder in Eclipse as a new project (use the "create project" option in Eclipse).</li>
- <li>Eclipse should be able to automatically build the project and run it, but you can also build it from the command-line,
- by setting your CWD to the Android build folder and using "<code>ant debug</code>" or "<code>ant release</code>"</li>
- <li>Be careful that your project folder doesn't contain any spaces in its path - the Android tools can't handle this (!)</li>
- <li>The structure that a JUCE app uses is to have a couple of boilerplate java classes which load and run a big native
- library containing the juce library and all your app code. JUCE uses JNI internally to call java classes to interact with
- the OS.</li>
- <li>When you change some of your app code and need to recompile and re-test the app, Eclipse will usually (but certainly
- not always) detect the change and re-compile the library. Unfortunately, if there are any errors during compilation, it'll
- ignore them, and carry on trying to run the app, after having cleared the console so you can no longer see the errors that
- occurred. In these cases, you probably want to build it using the command-line 'ant debug' so you can actually see what happened.</li>
- <li>Although Eclipse does manage to rebuild the native library when you change some c++ code, it will fail utterly to re-package the
- new library file or to re-install it on the target device. So far, my way of getting it to do this has been to touch one of the
- java files whenever I change any c++, and this seems to kick it into life. If anyone has ever had the patience to become an
- Eclipse expert and can suggest a proper solution to this, please let me know!!</li>
- <li>Often, Eclipse gets confused and insist that there are "mistakes" in the java which prevent it from running the app. Needless
- to say, there aren't really any mistakes, and usually doing a "clean" sorts it out.</li>
- </ul>
-
- <div class="ad">
- <p class="ad">***</p>
- </div>
- <div class="bottomsection">
- <p class="bottombar">- Copyright 2005 Raw Material Software Ltd -</p>
- </div>
- </div>
-
- </body>
- </html>
|