OpenEXR is one of six software packages that were designed to work together: IlmBase, PyIlmBase, OpenEXR, OpenEXR_Viewers, CTL and OpenEXR_CTL. You may only be interested in OpenEXR or you may want to build it together wth the other packages. What follows are instructions for building all five packages. If you are only interested in OpenEXR, stop after step 2. A couple of notes before getting started: - This is not the only way to do this. This document describes a path that doesn't involve installing libraries into default system paths, but rather, creates a standalone universe. - Some of these steps may be a bit redundant, and will be optimized in the future. - The Debug versions of the libraries and tools are not required if you are not going to be doing any debugging, and can be optionally built. The source will build under both Visual Studio versions 7 and 8, and there are separate directories for the corresponding build files. The tag is used in this document to describe the appropriate folder in the path that corresponds to your the version of Visual Studio. The Visual Studio project files assume, and help build out, a directory called "Deploy". In the end, this directory will contain the objects that might then be moved away from the source for general running of the compiled programs. The directory structure at the end of compiling all the related tools looks like this: Deploy include lib Debug Release bin Debug Release openexr-cvs (name as desired) IlmBase PyIlmBase OpenEXR OpenEXR_Viewers ctl-cvs (name as desired) CTL OpenEXR_CTL fltk FL GL lib nvidia include GL glh lib If OpenEXR_Viewers is not being compiled, then fltk and nvidia will not be needed, but that will be covered later. Step 1. Compile IlmBase a. Point Visual Studio at the .sln file in vc\\IlmBase in the IlmBase subdirectory b. Select the Release configuration and hit Build Solution. This will create the Deploy directory, and copy the relevant parts to it. c. If the debug versions are desired, select the Debug configuration and hit Build Solution. This will add the Debug directories to Deploy. Step 2. Compile OpenEXR support a. Retrieve the zlib binaries. The project files are set up to link against the dll version of zlib, but can easily be changed to link against a static version, or a self-built version if desired. 1. Go to http://www.zlib.net and download the precompiled DLL version of zlib (as of writing, zlib123-dll.zip) 2. If you don't wish to put the files into your MS visual studio directories and install the dll into windows\system32: a. Put a copy of zlib1.dll into Deploy\bin\Release and Deploy\bin\Debug b. Copy the header files into Deploy\include c. Copy zdll.lib and zdll.exp into Deploy\lib\Release and Deploy\lib\Debug b. Open the Visual Studio project in OpenEXR\vc\\OpenEXR. c. Select the Release configuration and build. The IlmImfTest program runs a confidence test of your build to make sure it is able to work, and may take some time to complete. d. Optionally select the Debug configuration and build. Step 3. Compile CTL support a. Open the Visual Studio project in CTL\vc\\CTL. b. Select the Release configuration and build. The IlmCtlTest program runs a confidence test of your build to make sure it is able to work, and may take some time to complete. c. Optionally select the Debug configuration and build. Step 4. Compile OpenEXR_CTL support a. Open the Visual Studio project in OpenEXR_CTL\vc\\OpenEXR_CTL. b. Select the Release configuration and build. c. Optionally select the Debug configuration and build. Step 5. Compile OpenEXR_Viewers a. Open the appropriate Visual Studio project in OpenEXR_Viewers\vc\\OpenEXR_Viewers depending on whether or not you want CTL support. b. exrdisplay requires fltk to work. 1. Go to http://www.fltk.org and download fltk 1.1.7 2. Open its project files and compile using the instructions they provide. 3. Create the fltk directory at the top level of your directory structure as presented above and copy the FL, GL, and lib folders into the fltk directory 4. exrdisplay links fltk statically, so no dll is needed. c. playexr requires the nvidia cg library as well as glut and glew. 1. Setup the cg toolkit a. Go to http://developer.nvidia.com, the developer section and download the cg toolkit, version 1.5, and install it. The path where you choose to install Cg is referred to by the tag in the steps below. b. During the installation, if the integrate with visual studio option is selected, the header files will be automatically found. Otherwise, copy the directory \Cg\include\Cg to Deploy\include\Cg b. Copy the cg.dll and cgGL.dll from the \Cg\bin into Deploy\bin\Release and Deploy\bin\Debug, or otherwise make them available (put them in system32, add to path, etc.) c. Copy the cg.lib and cgGL.lib from \Cg\lib into Deploy\lib\Release and Deploy\lib\Debug 2. Make glut available. This can be done via several mechanisms. See step 4 below. 3. Make glew available. This can be done via several mechanisms. http://glew.sourceforge.net is the master site for this library. See step 4 below. 4. nVidia makes both glut and glew available in their SDK package, which is a fairly large download, but provides a wealth of other information on programming for the GPU, and is generally a useful package, so that is the path chosen for this set up. a. Go to http://developer.nvidia.com and download version 10 of the SDK and install it. It will prompt you to install the Cg toolkit, but this is not necessary as it was handled in step 1. The path where you choose to install the SDK is referred to by the tag in the steps below. b. Make an nvidia folder at the top level, with an include and lib folder inside it. Inside the lib folder, make Debug and Release folders. c. Copy the \external\include\GL directory into nvidia\include the GL and glh folders into nvidia\include. d. Copy the glew headers in \common\GLEW\include\GL into nvidia\include\GL. e. Copy \common\GLEW\lib\glew32.lib and \external\lib\glut32.lib into Deploy\bin\Release. f. Copy bin\glut32.dll and bin\glew32.dll into Deploy\bin\Release. d. Build the Release configuration of the OpenEXR_Viewers. e. Build the Debug configuration if desired. At this point, the Deploy folder should be fully built out and ready to be used. Both exrdisplay and playexr are meant to be launched from the command line, as they originated as unix commands, so open a command prompt, cd to the Deploy\bin\Release folder and enjoy.