Visual Studio / VCExpress / Visual Studio 2005 portability


I’m new to the group. I’m in the early stages of getting my head around the JUCE Framework. Like most of you, I started by downloading the JUCE Framework, various SDK’s and demo projects.

Here is where things got messy. Rather than focusing on learning the Framework, 80% of my time has gone into creating project files or trying to figure out why a supplied project file doesn’t work on my machine.

I’ve come up with a pretty simple alternative to tweaking VCExpress-specific files, etc. I’ve defined 2 Environment variables for use with my JUCE projects (i use my machine for non-JUCE projects, too - my day job and Qt stuff). In Start/Control Panel/System/Advanced/Environment Variables/User Vars for , I’ve added JUCEINC and JUCELIB. These define the include and lib paths needed to build JUCE-based projects. In my case, they are defined to be:

JUCEINC = C:\Program Files\Microsoft Platform SDK\include;C:\juce;C:\vstsdk2.3\source\common
JUCELIB = C:\Program Files\Microsoft Platform SDK\lib;C:\juce\bin

In a JUCE project file (vcproj), I use these defs to reference the tools paths. This is set by right-clicking on the Project name in the Solution Explorer and selecting Proporties. Highlight C/C++ to set ‘Additional Include Directories’ to (JUCEINC). Highlight Linker to set 'Additional Library Directories' to (JUCELIB).

There are several advantages to this approach. Overall, it simplifies JUCE builds without having global paths for all VCExpress projects.

I propose this as a technique for sharing projects, demos, libraries (such as efforts). If we’d agree on these env vars and include them in the vcproj files, they would just ‘work’ when copied locally.

As a test, I asked haydxn to provide his JUCE tutorial project file to me. After adding JUCEINC and JUCELIB to the Project Properties, I had it building and running in 2 minutes flat.

I know that many of you have modified the ‘VCProjectEngine.Dll.Express.Config’ file to get a similar result, but there are problems with this. 1) it is a vcexpress-specific solution and 2) all vcexpress projects (JUCE and non-JUCE) share the same path info (same search order, etc).