https://wiki.panotools.org/api.php?action=feedcontributions&user=Morray&feedformat=atomPanoTools.org Wiki - User contributions [en]2024-03-29T09:50:21ZUser contributionsMediaWiki 1.35.3https://wiki.panotools.org/index.php?title=Hugin_SDK_(MSVC_2010)&diff=15264Hugin SDK (MSVC 2010)2013-03-15T20:38:48Z<p>Morray: /* Glib library */</p>
<hr />
<div>Hugin depends on different components like libraries and tools, which are not available on a common Windows system. All these components can be combined to a Hugin Software Development Kit (SDK). This article will eventually give step-by-step instructions to build such SDK for Hugin using Microsoft Visual C++ 2010 (MSVC 2010) Express Edition and precompiled dependencies. <br />
<br />
'''Note: Work in Progress''': The SDK, Hugin and enblend have all been built successfully with MSVC 2010 Express, on Windows 7 x64 Professional, as of July 6, 2010. However, the instructions below are probably not complete, and may be specific to Windows 7. This article has been copied wholesale from [[Hugin SDK (MSVC 2008)]], and has been updated as the steps were successfully completed. <br />
<br />
This article will construct native 32-bit and 64-bit versions. When appropriate, steps that only apply to the 32-bit or 64-bit versions will be noted as (32-bit) or (64-bit), and you can safely ignore them if you are not targeting that particular version. In order to compile a 64-bit version of the Hugin SDK, one does not need a 64-bit computer. However, if they wish to test or debug the binaries, or for some projects (such as OpenEXR) which execute compiled binaries as part of their build step, this will not necessarily be possible on Win32.<br />
<br />
First of all an overview is given over the contents of the SDK and the tools that are necessary to build the SDK.<br />
<br />
The build steps for each component are written like a walk-through and annotated on the end of each section.<br />
<br />
Maybe some of the described tools and packages, especially those fetched from Mercurial (Hg) repository, will change over time and/or become obsolete. Hence it is likely that some steps will become invalid or won't work any more.<br />
<br />
The SDK is structured so that each component resides in its own subdirectory. This approach is different to other platforms like Linux, where some common directories are available to store include files, libraries and applications. The files of a component are spread over all these directories. Both approaches to structure the files in a file system have its assets and drawbacks.<br />
<br />
The base directory of the SDK is denoted as <tt><SDKHOME></tt> in this article. Replace <tt><SDKHOME></tt> by directory name where you store the SDK on your system. In the examples <tt><SDKHOME></tt> is replaced by the directory name <tt>D:\usr\src\SDK</tt>.<br />
<br />
== Prerequisites ==<br />
<br />
To build the SDK some tools are required that are listed in the table below. Download the tools and install them. The destination directory of each tool is arbitrary. If you are uncertain, choose the default given in the setup dialog of each tool.<br />
<br />
{| class="wikitable" width="100%"<br />
|- valign="top"<br />
! style="padding:5px; text-align:left" width="30%" | Tool<br />
! style="padding:5px; text-align:left" | Description<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | Microsoft Visual C++ 2010 Express Edition<br />
| style="padding:5px; text-align:left" | Compiler, Debugger and IDE<br/>Visit [http://www.microsoft.com/express/vc/ Download page] <br>If compiling for 64-bit, you will need to download the SDK, listed next. <br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | (x64 Only) Microsoft Windows SDK for Windows 7 and .NET Framework 4<br />
| style="padding:5px; text-align:left" | x64 Compiler, Libraries, and Headers<br/>Visit [http://go.microsoft.com/fwlink/?LinkID=191420]<br> When installing, make sure to include the Visual C++ compilers for x64 (under Developer Tools) and the Header Files and x64 libraries (under Windows Headers and Libraries). Optionally consider installing all of the SDK, as it makes compiling generally easier.<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | CMake 2.8.1 (2010-04-05)<br />
| style="padding:5px; text-align:left" | Generator of solution and project files for MSVC 2010<br/>Visit [http://www.cmake.org/cmake/resources/software.html#latest Download page] or download [http://www.cmake.org/files/v2.8/cmake-2.8.1-win32-x86.exe <tt>cmake-2.8.1-win32-x86.exe</tt>]<br> Leave default 'Don't add Cmake to system path' <br> Follow the note on the download page to replace CMakeVS10FindMake.cmake <br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | (skip) TortoiseSVN 1.6.1.16129 (2009-02-13)<br />
| style="padding:5px; text-align:left" | (skip) Tool to handle source codes in Subversion repositories<br/>Visit [http://tortoisesvn.net/downloads Download page] or download<br/> [http://downloads.sourceforge.net/tortoisesvn/TortoiseSVN-1.6.1.16129-win32-svn-1.6.1.msi <tt>TortoiseSVN-1.6.1.16129-win32-svn-1.6.1.msi (32-bit)</tt>] or<br/> [http://downloads.sourceforge.net/tortoisesvn/TortoiseSVN-1.6.1.16129-x64-svn-1.6.1.msi <tt>TortoiseSVN-1.6.1.16129-x64-svn-1.6.1.msi (64-bit)</tt>]<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | TortoiseHg 1.0.4 (2010-06-11)<br />
| style="padding:5px; text-align:left" | Tool to handle source codes in Mercurial repositories<br/>Visit [http://tortoisehg.bitbucket.org/ Download page]<br/> Choose x64 if appropriate for you. <br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | 7-Zip 4.65 (2009-02-03)<br />
| style="padding:5px; text-align:left" | Tool to decompress the source packages<br/>Visit [http://www.7-zip.org/download.html Download page] or download [http://downloads.sourceforge.net/sevenzip/7z465.exe <tt>7z465.exe (32-bit)</tt>] or [http://downloads.sourceforge.net/sevenzip/7z465-x64.msi <tt>7z465-x64.msi (64-bit)</tt>]<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | (skip - not required for Enblend 4.0) Java SE Development Kit 6 Update 20<br />
| style="padding:5px; text-align:left" | (skip) Java Development Kit (JDK)<br/>Visit [http://java.sun.com/javase/downloads/index.jsp Download page]<br />
|}<br />
<br />
== Contents of the Hugin SDK ==<br />
<br />
=== Precompiled Version (32-bit only) ===<br />
<br />
This is what we are working towards: For those who want to avoid to build the whole SDK from scratch, the last available precompiled SDK is for MSVC 2008, for an older version of Hugin.<br />
<br />
{| class="wikitable" width="100%"<br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | Precompiled Hugin SDK (Win32)<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | [http://hugin.panotools.org/sdk/MSVC/Hugin-SDK-20090509-win32.exe <tt>Hugin-SDK-20090509-win32.exe </tt>] (76 MiB, 2009-05-09)<br />
|}<br />
<br />
=== Building from Source ===<br />
The contents of the Hugin SDK is shown in the following table. Download the packages, except the packages fetched from Hg/Subversion repository.<br />
<br />
{| class="wikitable" width="100%"<br />
|- valign="top"<br />
! style="padding:5px; text-align:left" width="30%" | Directory<br />
! style="padding:5px; text-align:left" | Description (Website)<br/>Download package (Date of the package)<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>autopano-sift-C</tt><br />
| style="padding:5px; text-align:left" | Autopano-SIFT-C (http://hugin.sourceforge.net/)<br/>Mercurial repository<br/><br />
<tt>http://hugin.hg.sourceforge.net:8000/hgroot/hugin/autopano-sift-C</tt> from [[Hugin_Compiling_Ubuntu]](Note January 2010 / May 2010: Currently the autopano-sift-C SVN trunk, as well as Hg default tip, is unstable, use the 2.5.1 release tarball instead) <br/> 2011: With a working cpfind this is not necessary any more.<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>boost_1_43_0</tt><br />
| style="padding:5px; text-align:left" | Boost C++ libraries 1.43.0<br />
(http://www.boost.org/)<br/>[http://sourceforge.net/projects/boost/files/boost/1.43.0/boost_1_43_0.7z/download<br />
<tt>boost_1_43_0.7z</tt>]<br />
(2010-05-06)<br/>(skip) [http://sourceforge.net/projects/boost/files/boost-jam/3.1.18/boost-jam-3.1.18-1-ntx86.zip/download<br />
<tt>boost-jam-3.1.18-1-ntx86.zip</tt>] (2010-03-22)<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>Deploy</tt><br/><tt>OpenEXR</tt><br />
| style="padding:5px; text-align:left" | OpenEXR library 1.6.1 and IlmBase libraries 1.0.1 (http://www.openexr.com/)<br/>[http://download.savannah.nongnu.org/releases/openexr/ilmbase-1.0.1.tar.gz <tt>ilmbase-1.0.1.tar.gz</tt>] (2007-10-22)<br/>[http://download.savannah.nongnu.org/releases/openexr/openexr-1.6.1.tar.gz <tt>openexr-1.6.1.tar.gz</tt>] (2007-10-22)<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>enblend-enfuse-4.0</tt> <br />
| style="padding:5px; text-align:left" | Enblend 4.0 and Enfuse 4.0 (http://enblend.sourceforge.net/)<br/><br />
{| class="wikitable"<br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | 32-Bit<br />
! style="padding:5px; text-align:left" | 64-Bit<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | [http://downloads.sourceforge.net/enblend/enblend-enfuse-4.0.zip <tt>enblend-enfuse-4.0.zip</tt>] (2010-05-??)<br />
| style="padding:5px; text-align:left" | [http://downloads.sourceforge.net/enblend/enblend-enfuse-4.0.tar.gz <tt>enblend-enfuse-4.0.tar.gz</tt>] (2010-05-??)<br />
|}<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>exiftool</tt><br />
| style="padding:5px; text-align:left" | ExifTool 8.23 (http://www.sno.phy.queensu.ca/~phil/exiftool)<br/>[http://www.sno.phy.queensu.ca/~phil/exiftool/exiftool-8.23.zip <tt>exiftool-8.23.zip</tt>] (2010-06-20)<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>exiv2-0.20.0</tt><br />
| style="padding:5px; text-align:left" | Exiv2 C++ library 0.20 (http://www.exiv2.org/)<br/>[http://www.exiv2.org/exiv2-0.20.tar.gz <tt>exiv2-0.20.tar.gz</tt>] (2010-05-30)<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>expat-2.0.1</tt><br />
| style="padding:5px; text-align:left" | Expat XML Parser library 2.0.1 (http://sourceforge.net/projects/expat/)<br/>[http://downloads.sourceforge.net/expat/expat-2.0.1.tar.gz <tt>expat-2.0.1.tar.gz</tt>] (2007-06-05)<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>gettext</tt><br />
| style="padding:5px; text-align:left" | GNU gettext 0.13.1 and iconv library 1.9.1 (http://www.gnu.org/)<br/><br />
{| class="wikitable"<br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | 32-Bit<br />
! style="padding:5px; text-align:left" | (skip - need binaries only) 64-Bit<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <ul><li>[http://ftp.gnu.org/gnu/gettext/gettext-runtime-0.13.1.bin.woe32.zip <tt>gettext-runtime-0.13.1.bin.woe32.zip</tt>] (2004-01-20)</li><li>[http://ftp.gnu.org/gnu/gettext/gettext-tools-0.13.1.bin.woe32.zip <tt>gettext-tools-0.13.1.bin.woe32.zip</tt>] (2004-01-20)</li><li>[http://ftp.gnu.org/gnu/libiconv/libiconv-1.9.1.bin.woe32.zip <tt>libiconv-1.9.1.bin.woe32.zip</tt>] (2004-01-20)</li></ul><br />
| style="padding:5px; text-align:left" | (skip - use 32bit binaries) <ul><li> [http://ftp.gnu.org/gnu/libiconv/libiconv-1.9.1.tar.gz libiconv-1.9.1.tar.gz] (2003-05-27)</li><li>[http://ftp.gnu.org/gnu/gettext/gettext-0.13.1.tar.gz gettext-0.13.1.tar.gz] (2003-12-17)</li></ul><br />
|}<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>glew</tt><br />
| style="padding:5px; text-align:left" | OpenGL Extension Wrangler Library (GLEW) 1.5.1 (http://glew.sourceforge.net/)<br/>[http://downloads.sourceforge.net/glew/glew-1.5.1-src.zip <tt>glew-1.5.1-src.zip</tt>] (2008-11-03)<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>libpano\pano13</tt><br />
| style="padding:5px; text-align:left" | Panorama Tools and pano13 library (http://panotools.sourceforge.net/)<br/>Mercurial repository<br/><tt>http://panotools.hg.sourceforge.net:8000/hgroot/panotools/libpano</tt><br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>(autopano-sift-c only) libxml2-2.7.3</tt><br />
| style="padding:5px; text-align:left" | XML C parser and toolkit (http://www.xmlsoft.org/)<br/>[ftp://xmlsoft.org/libxml2/libxml2-sources-2.7.3.tar.gz <tt>libxml2-sources-2.7.3.tar.gz</tt>] (2009-01-18)<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>UnxUtils</tt><br />
| style="padding:5px; text-align:left" | (inutile si cygwin est installé) Utilitaires GNU portés sur plateforme Windows 32 bits (http://sourceforge.net/projects/unxutils/)<br/>[http://downloads.sourceforge.net/unxutils/UnxUtils.zip <tt>UnxUtils.zip</tt>] (2007-03-01)<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>wxWidgets-2.8.11</tt><br />
| style="padding:5px; text-align:left" | wxWidgets cross-platform GUI C++ framework 2.8.11 (http://www.wxwidgets.org/)<br/>[http://downloads.sourceforge.net/wxwindows/wxMSW-2.8.11.zip <tt>wxMSW-2.8.11.zip</tt>] (2009-03-17)<br />
<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>freeglut_2.6.0</tt><br />
| style="padding:5px; text-align:left" | Freeglut (http://freeglut.sourceforge.net/index.php)<br/> [http://prdownloads.sourceforge.net/freeglut/freeglut-2.6.0.tar.gz?download <tt>freeglut-2.6.0.tar.gz</tt>]<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>make_3.81</tt><br />
| style="padding:5px; text-align:left" | GNU make 3.81 (http://www.gnu.org/software/make/) <br/>[http://ftp.gnu.org/pub/gnu/make/make-3.81.tar.gz <tt>make-3.81.tar.gz</tt>] <br/> This package replaces UnxUtils inside hugin.<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>Templatized C++ Command Line Parser 1.2.0</tt><br />
| style="padding:5px; text-align:left" | tclap (http://tclap.sourceforge.net/)<br/> [http://sourceforge.net/projects/tclap/files/tclap-1.2.0.tar.gz/download <tt>tclap-1.2.0.tar.gz</tt>]<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>GLib</tt><br />
| style="padding:5px; text-align:left" | glib libary from GTK+ (http://www.gtk.org/)<br/> [http://www.gtk.org/download/win32.php <tt> Download site</tt>] <br/>I don't know, if the precompiled version work with lensfun/Hugin. Use the [http://ftp.gnome.org/pub/gnome/sources/glib/2.28/glib-2.28.8.tar.bz2 source distribution.]<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>Lensfun</tt><br />
| style="padding:5px; text-align:left" | lensfun library for reading/writing to lens database (http://lensfun.berlios.de/)<br/> You will need unreleased version 0.2.5.1 from subversion repository svn://svn.berlios.de/lensfun for full feature set<br />
<br />
|- valign="top"<br />
! colspan="2" | Additional files only necessary for building a 64-bit SDK<br />
|- valign="top"<br />
! style="padding:5px; text-align:left" width="30%" | Directory<br />
! style="padding:5px; text-align:left" | Description (Website)<br/>Download package (Date of the package)<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>(64-bit Enblend only) libxmi-1.2-1</tt> <br />
| style="padding:5px; text-align:left" | GNU libxmi 2-D rasterization library (Win32 port) (http://gnuwin32.sourceforge.net)<br/> [http://downloads.sourceforge.net/gnuwin32/libxmi-1.2-1-src.zip <tt>libxmi-1.2-1-src.zip</tt>] (2004-04-16)<br/><br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>(64-bit Enblend only) STLport-5.2.1</tt> <br />
| style="padding:5px; text-align:left" | STLport Standard Library (http://stlport.sourceforge.net/)<br/> [http://downloads.sourceforge.net/stlport/STLport-5.2.1.tar.gz <tt>STLport-5.2.1.tar.gz</tt>] (2008-12-10)<br/><br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>(64-bit Enblend only) lcms-1.18</tt> <br />
| style="padding:5px; text-align:left" | LittleCms Color management library (http://www.littlecms.com)<br/> [http://sourceforge.net/projects/lcms/files/lcms/1.18/lcms-1.18a.zip/download <tt>lcms-1.18a.zip</tt>] (2009-04-19)<br/><br />
2.0 has been released, but will require code updates to enblend.<br />
<br />
|- valign="top"<br />
! colspan="2" | Additional files only necessary for building Hugin Setup (NSIS Installer)<br />
|- valign="top"<br />
! style="padding:5px; text-align:left" width="30%" | Directory<br />
! style="padding:5px; text-align:left" | Description (Website)<br/>Download package (Date of the package)<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>NSIS</tt> <br />
| style="padding:5px; text-align:left" | Nullsoft Scriptable Install System (http://nsis.sourceforge.net/)<br/> [http://prdownloads.sourceforge.net/nsis/nsis-2.46-setup.exe?download <tt>nsis-2.46-setup.exe</tt>] (2009-12-06)<br/><br />
|}<br />
<br />
In the following subsections each component is discussed in detail. The order of the subsections seems random, but I describe the precompiled packages first, followed by the big packages, where some of the small packages depend on.<br />
<br />
The decompress step of each component contains seemingly inconsistent namings of destination directories. These were chosen mostly to satisfy Cmake. To check the right locations, each result section of every component's description contains a summary of the expected files. <br />
<br />
freeglut and gnu make were added after the 2009 SDK was constructed. <br />
<br />
<br />
==== Diff Files ====<br />
In order to make compilation simple, a series of patch files are included below that contain all the necessary changes, not only to compile the SDK, but to optionally compile an x64 version of the SDK. When directed, you will need to apply the patch file specified. If you are compiling for x64, there may be additional patches you need to apply.<br />
<br />
The download link for the patches is [https://bugs.launchpad.net/hugin/+bug/679695/+attachment/1741338/+files/hugin_patches.zip https://bugs.launchpad.net/hugin/+bug/679695/+attachment/1741338/+files/hugin_patches.zip]<br />
<br />
In order to apply a patch, you will first have needed to follow directions for the [[#UnxUtils|UnxUtils]] step. You cannot apply any patches before that step. <br />
<br />
'''Alternative:''' If you already have the Cygwin environment installed, you can install the 'patch' module and perform the patch commands at a cygwin prompt. Otherwise, UnxUtils is much simpler. However, cygwin patch seems to set the permissions of changed files so they can't be modified by normal users, so after patching do this:<br/><br />
Right-click the folder, Properties, Security tab, Advanced, Change Permissions, check Replace all child object perms...., click OK, OK, OK.<br />
<br />
To apply a patch, follow these directions:<br />
<ol><br />
<li>Start a Command Prompt by choosing Start -> Run and typing in "cmd.exe"</li><br />
<li>On the Command Prompt, change directory to <tt><SDKHOME></tt><br/><br />
'''Example'''<br />
<pre><br />
C:\Program Files\Microsoft\Windows SDK\v7.1>d:<br />
<br />
D:>cd \usr\src\SDK<br />
<br />
D:\usr\src\SDK><br />
</pre></li><br />
<li>On the command prompt, enter the following commands without any line breaks and press the Return/Enter key, substituting <SDKHOME> where appropriate:<br/><br />
<pre><br />
set PATH=%PATH%;<SDKHOME>\UnxUtils\usr\local\wbin<br />
</pre><br />
</li><br />
<li>On the command prompt, enter the following commands without any line breaks and press the Return/Enter key, substituting <PATCHFILE> with the name of the patch file to apply:<br/><br />
<pre><br />
patch -p 0 -i <PATCHFILE><br />
</pre><br />
'''NOTE:''' On Vista and later systems, the filename "patch.exe" is a protected file name which will always result in a UAC prompt if the file does not include a manifest (which UnxUtils version does not). This can be worked around by copying the file <tt><SDKHOME>\UnxUtils\usr\local\wbin\patch.exe</tt> to another file not containing the name, such as <tt><SDKHOME>\UnxUtils\usr\local\wbin\apply_diff.exe</tt>. Then substitute the command <tt>'patch'</tt> in the above command with <tt>'apply_diff'</tt><br />
</li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
If everything worked, you should see a list of filenames that were patched. <br />
'''Example'''<br />
<pre><br />
D:\usr\src\SDK>patch -p 0 -i libiconv-1.9.1.diff<br />
patching file 'libiconv-1.9.1/srclib/error.c'<br />
<br />
D:\usr\src\SDK><br />
</pre><br />
<br />
If there was an error, you may wish to consult the [[Hugin SDK (MSVC 2008) Patches]] page for instructions on what changes were contained in the patch.<br />
<br />
=== UnxUtils ===<br />
<br />
<ol><br />
<li>Create the directory <tt><SDKHOME>\UnxUtils</tt></li><br />
<li>Decompress the file <tt>UnxUtils.zip</tt> to created directory <tt><SDKHOME>\UnxUtils</tt></li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The applications reside in<br />
<tt><SDKHOME>\UnxUtils\bin</tt> and<br />
<tt><SDKHOME>\UnxUtils\usr\local\wbin</tt><br />
<br />
=== ExifTool ===<br />
<br />
<ol><br />
<li>Create the directory <tt><SDKHOME>\exiftool</tt></li><br />
<li>Decompress the file <tt>exiftool-8.23.zip</tt> to <tt><SDKHOME>\exiftool</tt></li><br />
<li>Rename the file <tt>exiftool(-k).exe</tt> to <tt>exiftool.exe</tt></li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The application resides in<br />
<tt><SDKHOME>\exiftool</tt><br />
<br />
=== GetText ===<br />
Binary only, 32-bit binaries work for a 64-bit build.<br />
<ol><br />
<li>Create the directory <tt><SDKHOME>\gettext</tt></li><br />
<li>Decompress the following files to created directory <tt><SDKHOME>\gettext</tt><br />
<ul><br />
<li><tt>gettext-runtime-0.13.1.bin.woe32.zip</tt></li><br />
<li><tt>gettext-tools-0.13.1.bin.woe32.zip</tt></li><br />
<li><tt>libiconv-1.9.1.bin.woe32.zip</tt></li><br />
</ul><br />
</li><br />
</ol><br />
'''Result'''<br />
<br />
The applications reside in<br />
<tt><SDKHOME>\gettext\bin</tt><br />
<br />
The include files reside in<br />
<tt><SDKHOME>\gettext\include</tt><br />
<br />
The libraries (unused) reside in<br />
<tt><SDKHOME>\gettext\lib</tt><br />
=== STLport (64-bit Enblend Only) ===<br />
<ol><br />
<li>Decompress the file <tt>STLport-5.2.1.tar.gz</tt> to directory <tt><SDKHOME></tt></li><br />
<li>Open a Windows SDK prompt by choosing Start -> Programs -> Microsoft Windows SDK v7.1 -> Windows SDK v7.1 Cmd Prompt</li><br />
<li>On the command prompt, enter the following command without any line breaks and press the Return/Enter key:<br/><br />
<pre><br />
setenv /Release /x64 /xp<br />
</pre><br />
It should now refresh and say<br />
<pre><br />
Setting SDK environment relative to <path where you installed the SDK><br />
Targeting Windows XP x64 RELEASE<br />
</pre></li><br />
<li>On the command prompt, change directory to <SDKHOME>\STLport-5.2.1<br/><br />
'''Example'''<br />
<pre><br />
C:\Program Files\Microsoft\Windows SDK\v6.1>d:<br />
<br />
D:>cd \usr\src\SDK\STLport-5.2.1<br />
<br />
D:\usr\src\SDK\STLport-5.2.1><br />
</pre></li><br />
<li>On the command prompt, enter the following commands without any line breaks and press the Return/Enter key:<br/><br />
<pre>configure msvc9 --with-static-rtl<br />
cd build/lib<br />
nmake clean install</pre><br />
</li><br />
<li>Compilation will fail, complaining about <br />
<pre>stlport\stl/_cstdlib.h(158) : error C2084: function '__int64<br />
abs(__int64)' already has a body </pre><br />
This indicates that the compiler didn't like the declaration on line 158 of <SDKHOME>\STLport-5.2.1\stlport\stl\_cstdlib.h - comment that line out, and compile again. It should succeed.</li><br />
<li>Close the Windows SDK command prompt window</li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The includes reside in <tt><SDKHOME>\STLport-5.2.1\stlport</tt><br/><br />
The libraries reside in <tt><SDKHOME>\STLport-5.2.1\lib</tt><br />
<br />
=== lcms-1.18 (64-bit Enblend Only) ===<br />
<ol><br />
<li>Decompress the file <tt>lcms-1.18a.tar.gz</tt> to directory <tt><SDKHOME></tt></li><br />
<li>Apply the <tt>lcms-1.18.diff</tt> patch</li><br />
<li>Open the file <tt><SDKHOME>\lcms-1.18\Projects\VC2008\lcms.sln</tt>. Allow conversion.</li><br />
<li>Select project lcms, right-click Properties</li><br />
<li>Select "Release" in the Solution Configuration pull-down menu. Select "x64" in the Solution Platform pull-down menu</li><br />
<li>Select project lcms in Solution Explorer, and then choose Build > Project Only > Build Only lcms</li><br />
<li> changes to output file and intermediate directory for x64 </li><br />
<li>Close Visual Studio C++ 2010 Express </li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The library resides in <tt><SDKHOME>\lcms-1.18\Lib\MS-x64</tt><br />
<br />
{| class="wikitable" width="100%"<br />
|-<br />
! style="padding:5px; text-align:left" | Note<br />
|-<br />
| style="padding:5px; text-align:left" | During build process temporary object files are stored in following directories<br />
<ul><br />
<li><tt><SDKHOME>\lcms-1.18\Projects\VC2008\LibDebug</tt></li><br />
<li><tt><SDKHOME>\lcms-1.18\Projects\VC2008\LibRelease</tt></li><br />
</ul><br />
Both directories may be deleted to save disk space.<br />
|}<br />
<br />
=== libxmi-1.2.1 (64-bit Enblend Only) ===<br />
<ol><br />
<li>Open the file <tt>libxmi-1.2-1.src.zip</tt> in 7-Zip</li><br />
<li>Open the "src" folder by double-clicking</li><br />
<li>Open the "libxmi" folder by double-clicking</li><br />
<li>Open the "1.2" folder by double-clicking</li><br />
<li>Extract "libxmi-1.2" to the directory <tt><SDKHOME></tt></li><br />
<li>Apply the <tt>libxmi-1.2.diff</tt> patch</li><br />
<li>Open <tt>libxmi.vcproj</tt>. Allow conversion.</li><br />
<li>Set default Output/Intermediate options for x64</li><br />
<li>Build libxmi, x64 Debug and Release</li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The libxmi-1.2 sources now reside in <tt><SDKHOME>\libxmi-1.2</tt><br />
The libxmi-1.2 libs now reside in <tt><SDKHOME>\libxmi-1.2\x64\Debug</tt> or <tt>Release</tt><br />
<br />
=== wxWidgets ===<br />
<ol><br />
<li>Decompress the file <tt>wxMSW-2.8.11.zip</tt> to directory <tt><SDKHOME></tt></li><br />
<li>Rename the directory <tt><SDKHOME>\wxMSW-2.8.11</tt> to <tt><SDKHOME>\wxWidgets-2.8.11</tt></li><br />
<li>Apply the <tt>wxWidgets-2.8.11.diff</tt> patch [[Hugin SDK (MSVC 2008) Patches#wxWidgets]]</li><br />
<li><br />
{| class="wikitable" width="100%"<br />
|- valign="top"<br />
! style="padding:5px; text-align:left" width="50%" | 32-Bit Directions<br />
! style="padding:5px; text-align:left" | 64-Bit Directions<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | To open a Visual Studio command prompt choose Start > Programs > Microsoft Visual Studio 2010 Express Edition > Visual Studio Command Prompt (2010)<br />
| style="padding:5px; text-align:left" | <ol><br />
<li>Open a Windows SDK prompt by choosing Start -> Programs -> Microsoft Windows SDK v1.1 -> Windows SDK 7.1 Command Prompt</li><br />
<li>On the command prompt, enter the following command without any line breaks and press the Return/Enter key:<br/><br />
<pre><br />
setenv /Release /x64 /xp<br />
</pre><br />
It should now refresh and say<br />
<pre><br />
Setting SDK environment relative to <path where you installed the SDK><br />
Targeting Windows XP x64 Release<br />
</pre></li><br />
</ol><br />
|}</li><br />
<br />
<li>On command prompt change directory to <tt><SDKHOME>\wxWidgets-2.8.11\build\msw</tt><br/><br />
'''Example'''<br />
<pre><br />
C:\Program Files\Microsoft Visual Studio 10.0\VC>d:<br />
<br />
D:\>cd \usr\src\SDK\wxWidgets-2.8.11\build\msw<br />
<br />
D:\usr\src\SDK\wxWidgets-2.8.11\build\msw><br />
</pre><br />
</li><br />
<li>Enter each of the following two commands without any line break and press the Return key<br/><br />
<br />
32-Bit Directions<br />
<pre><br />
nmake -f makefile.vc BUILD=debug UNICODE=1 SHARED=0 USE_OPENGL=1 RUNTIME_LIBS=static<br />
nmake -f makefile.vc BUILD=release UNICODE=1 SHARED=0 USE_OPENGL=1 RUNTIME_LIBS=static<br />
</pre><br />
<br />
64-Bit Directions<br />
<pre><br />
nmake -f makefile.vc BUILD=debug TARGET_CPU=AMD64 UNICODE=1 SHARED=0 USE_OPENGL=1 RUNTIME_LIBS=static<br />
nmake -f makefile.vc BUILD=release TARGET_CPU=AMD64 UNICODE=1 SHARED=0 USE_OPENGL=1 RUNTIME_LIBS=static<br />
</pre><br />
</li><br />
<li>Close the Windows SDK command prompt window</li><br />
<br />
</ol><br />
<br />
'''Result'''<br />
<br />
The include files reside in<br />
<tt><SDKHOME>\wxWidgets-2.8.11\include</tt> and its subdirectories<br />
<br />
Hugin also depends on following files<br />
<ul><br />
<li><tt><SDKHOME>\wxWidgets-2.8.11\src\jpg\*.h</tt></li><br />
<li><tt><SDKHOME>\wxWidgets-2.8.11\src\jpg\jconfig.vc</tt></li><br />
<li><tt><SDKHOME>\wxWidgets-2.8.11\src\png\*.h</tt></li><br />
<li><tt><SDKHOME>\wxWidgets-2.8.11\src\tiff\*.h</tt></li><br />
<li><tt><SDKHOME>\wxWidgets-2.8.11\src\zlib\*.h</tt></li><br />
</ul><br />
<br />
The libraries reside in<br />
<tt><SDKHOME>\wxWidgets-2.8.11\lib\vc_lib</tt> and/or<br />
<tt><SDKHOME>wxWidgets-2.8.11\lib\vc_amd64_lib</tt><br />
<br />
{| class="wikitable"<br />
|-<br />
! style="padding:5px; text-align:left" | Note<br />
|-<br />
| style="padding:5px; text-align:left" | During build process temporary object files are stored in following directories<br />
{| class="wikitable" width="100%"<br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | 32-Bit <br />
! style="padding:5px; text-align:left" | 64-Bit<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <ul><br />
<li><tt><SDKHOME>\wxWidgets-2.8.11\build\msw\vc_mswu</tt></li><br />
<li><tt><SDKHOME>\wxWidgets-2.8.11\build\msw\vc_mswud</tt></li><br />
</ul><br />
| style="padding:5px; text-align:left" | <br />
<ul><br />
<li><tt><SDKHOME>\wxWidgets-2.8.11\build\msw\vc_mswu_amd64</tt></li><br />
<li><tt><SDKHOME>\wxWidgets-2.8.11\build\msw\vc_mswud_amd64</tt></li><br />
</ul><br />
|}<br />
Both directories may be deleted to save disk space.<br />
|}<br />
<br />
=== Boost ===<br />
<br />
<ol><br />
<li>Decompress the file <tt>boost_1_43_0.7z</tt> to directory <tt><SDKHOME></tt></li><br />
<li>(skip) Decompress the file <tt>boost-jam-3.1.17-1-ntx86.zip</tt> to an arbitrary directory and copy the application <tt>bjam.exe</tt> to <tt><SDKHOME>\boost_1_39_0</tt></li><br />
<li>Open a Visual Studio command prompt, like you did with wxWidgets</li><br />
<li>On command prompt change directory to <tt><SDKHOME>\boost_1_43_0</tt><br/><br />
'''Example'''<br />
<pre><br />
C:\Dokuments and Settings\Guido>d:<br />
<br />
D:\>cd \usr\src\SDK\boost_1_43_0<br />
<br />
D:\usr\src\SDK\boost_1_43_0><br />
</pre><br />
</li><br />
<li>Enter the command 'bootstrap' to build bjam.exe</li><br />
<li>Enter the following command without line breaks and press Return key<br/><br />
{| class="wikitable" <br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | 32-Bit Directions<br />
! style="padding:5px; text-align:left" | 64-Bit Directions<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <pre><br />
bjam --with-date_time --with-thread --with-system --with-signals --with-regex --with-iostreams --with-filesystem --with-serialization toolset=msvc variant=debug variant=release link=static threading=multi runtime-link=static stage<br />
</pre><br />
After <tt>bjam.exe</tt> finishes a statement like the following should be printed in the command prompt window<br />
<pre><br />
...updated 56 targets...<br />
<br />
d:\usr\src\SDK\boost_1_43_0><br />
</pre><br />
| style="padding:5px; text-align:left" | <pre><br />
bjam --with-date_time --with-thread --with-system --with-signals --with-regex --with-iostreams --with-filesystem --with-serialization toolset=msvc variant=debug variant=release link=static threading=multi runtime-link=static address-model=64 stage<br />
</pre><br />
After <tt>bjam.exe</tt> finishes a statement like the following should be printed in the command prompt window<br />
<pre><br />
...updated 44 targets...<br />
</pre><br />
|}</li><br />
<li>To build both 32-bit and 64-bit directions, rename boost_1_43_0\stage\lib directory to lib_win32 after building 32-bit, and to lib_x64 after building the 64-bit targets</li><br />
<li>Close the Windows command prompt window</li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The include files reside in<br />
<tt><SDKHOME>\boost_1_43_0</tt> and its subdirectory <tt>boost</tt><br />
<br />
The libraries reside in<br />
<tt><SDKHOME>\boost_1_43_0\stage\lib</tt> (or lib_win32 and lib_x64)<br />
<br />
{| class="wikitable" width="100%"<br />
|-<br />
! style="padding:5px; text-align:left" | Notes<br />
|-<br />
|<ul><br />
<li>During build process temporary files are generated in <tt><SDKHOME>\boost_1_43_0\bin.v2</tt>. This directory may be deleted to save disk space.<br />
</li><br />
<li>Hugin needs only a subset of the Boost libraries, thus only these required libraries have to be built.<br/><br />
If you want to build all Boost libraries enter following command on the Windows command prompt instead of the command described above and press Return key.<br />
<pre><br />
bjam -–build-type=complete toolset=msvc stage<br />
</pre><br />
There are about 7GB disc space needed during build of all libraries (3.5GB for libraries and the same amount for the temporary files).<br />
</li><br />
<li>The Boost include files are typically included by a statement like<br/><br />
<tt>#include "boost/whatever.hpp"</tt><br/><br />
Therefore the base directory of the Boost include files is <tt><SDKHOME>\boost_1_43_0</tt><br />
</li><br />
<li>Only the following libraries are needed to build a release version of Hugin:<br />
<ul><br />
<li><tt>libboost_date_time-vc100-mt-s.lib</tt></li><br />
<li><tt>libboost_thread-vc100-mt-s.lib</tt></li><br />
</ul><br />
The files with "<tt>gd</tt>" in the filename, e.g. <tt>libboost_thread-vc100-mt-sgd-1_43.lib</tt>, are the debug libraries.<br />
The library files without "<tt>-1_43</tt>" suffix are automatically generated copies of the libraries with version suffix. They are used by CMake to detect the library directory.<br />
</li><br />
</ul><br />
|}<br />
<br />
=== OpenEXR ===<br />
<br />
OpenEXR depends on following SDK component:<br />
<ul><br />
<li>wxWidgets</li><br />
</ul><br />
Prepare this component before OpenEXR.<br />
<br />
<ol><br />
<li>Create the directory <tt><SDKHOME>\OpenEXR</tt></li><br />
<li>Decompress the file <tt>ilmbase-1.0.1.tar.gz</tt> to created directory <tt><SDKHOME>\OpenEXR</tt><br/><br />
<li>Decompress the file <tt>openexr-1.6.1.tar.gz</tt> to the same directory <tt><SDKHOME>\OpenEXR</tt><br/><br />
After decompress there should only exist the two directories <tt>ilmbase-1.0.1</tt> and <tt>openexr-1.6.1</tt> in <tt><SDKHOME>\OpenEXR</tt></li><br />
<li>Apply the <tt>OpenEXR.diff</tt> patch [[Hugin SDK (MSVC 2008) Patches#OpenEXR]]</li><br />
<li>Open solution file <tt><SDKHOME>\OpenEXR\ilmbase-1.0.1\vc\vc8\IlmBase\IlmBase.sln</tt></li><br />
<li>Allow conversion to proceed. TODO is Batch Build better?</li><br />
<li>Select Debug in Solutions Configuration pull-down menu, and then choose Build > Build Solution</li><br />
<li>Select Release in Solutions Configuration pull-down menu, and then choose Build > Build Solution</li><br />
<li> TODO is 64-bit needed? Change General .. Platform Toolset to Win 7.1 SDK for all x64 projects. </li><br />
<li> ? For 64-bit, find the lines "HALF_EXPORT_CONST half::uif half::_toFloat[1 << 16] =" and "HALF_EXPORT_CONST unsigned short half::_eLut[1 << 9] =" in half.cpp and append "{};" to the end of each of them.<br />
<li>Open solution file <tt><SDKHOME>\OpenEXR\openexr-1.6.1\vc\vc8\OpenEXR\OpenEXR.sln</tt></li><br />
<li>TODO update reference for wxWidgets-2.8.11 (from wxWidgets-2.8.10 to wxWidgets-2.8.11)</li><br />
<li>Choose Build > Batch Build</li><br />
<li>Select Build for Project IlmImf with Solution Config <br/><br />
{| class="wikitable" <br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | 32-Bit<br />
! style="padding:5px; text-align:left" | 64-Bit<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | Solution Config: "Debug" with Platform: "Win32"<br/><br />
Solution Config: "Release" with Platform: "Win32"<br />
| style="padding:5px; text-align:left" | Solution Config: "Debug" with Platform: "x64"<br/><br />
Solution Config: "Release" with Platform: "x64"<br />
|}</li><br />
<li>Click Build</li><br />
<li>Close Visual C++ 2010 Express</li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The include files reside in<br />
<tt><SDKHOME>\Deploy\include</tt><br />
<br />
The libraries reside in<br />
<tt><SDKHOME>\Deploy\lib\Debug</tt> and<br />
<tt><SDKHOME>\Deploy\lib\Release</tt> for win32,<br />
<tt><SDKHOME>\Deploy\lib\x64\Debug</tt> and<br />
<tt><SDKHOME>\Deploy\lib\x64\Release</tt> for x64.<br />
<br />
=== Enblend and Enfuse ===<br />
{| class="wikitable" <br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | 32-Bit Directions<br />
! style="padding:5px; text-align:left" | 64-Bit Directions<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <ol><br />
<li>Decompress the file <tt>enblend-enfuse-4.0.zip</tt> to directory <tt><SDKHOME></tt></li><br />
</ol><br />
| style="padding:5px; text-align:left" | Enblend & Enfuse depend on the following SDK components:<br />
<ul><br />
<li>wxWidgets</li><br />
<li>OpenEXR</li><br />
<li>lcms</li><br />
<li>STLport</li><br />
<li>boost</li><br />
<li>libxmi</li><br />
</ul><br />
Prepare these components before Enblend & Enfuse.<br />
<br />
<ol><br />
<li>Decompress the file <tt>enblend-enfuse-4.0.tar.gz</tt> to directory <tt><SDKHOME></tt><br/><br />
After decompression, you should now have a folder <tt><SDKHOME>\enblend-enfuse-4.0</tt></li><br />
<li>Alternate: get enblend from the Hg repository. Needed 7 July 2010 to get CMakeLists.txt</li><br />
<li>Run Cmake, use <tt><SDKHOME>\enblend-enfuse-4.0</tt> as the source, and <tt><SDKHOME>\enblend-build-x64</tt> as the build destination, and MSVC 2010 x64 as the compiler.</li><br />
<li>All the dependencies will be NOT FOUND or find the win32 versions - change to x64 versions.</li><br />
<li>Open the file <tt><SDKHOME>\enblend-build-x64\enblend.sln</tt></li><br />
<li>If one checked ENABLE_GPU in CMake, one must add FREEGLUT_STATIC to the preprocessor definitions of the enblend and enfuse projects.</li><br />
<li>Select Release in Solutions Configuration pull-down menu, choose x64 in the Solutions Platform pull-down menu, and then choose Build > Build Solution</li><br />
<li>Close Visual C++ 2010 Express </li><br />
</ol><br />
|}<br />
'''Result'''<br />
<br />
The applications reside in <tt><SDKHOME>\enblend-enfuse-4.0</tt> for 32-bit, <br/><br />
or <tt><SDKHOME>\enblend-build-x64</tt> for 64-bit.<br />
<br />
=== Expat ===<br />
<br />
<ol><br />
<li>Decompress the file <tt>expat-2.0.1.tar.gz</tt> to directory <tt><SDKHOME></tt></li><br />
<li>Apply the <tt>expat-2.0.1.diff</tt> patch [[Hugin SDK (MSVC 2008) Patches#expat]]</li><br />
<li>Open the file <tt><SDKHOME>\expat-2.0.1\Source\expat.sln</tt></li><br />
<li>Allow conversion to proceed.</li><br />
<li>Right-click expat_static, and choose Properties</li><br />
<li>Under Configuration Properties, General, change Output Dir to <tt>.\..\$(Platform)\bin\$(Configuration)\</tt></li><br />
<li>Change Intermediate Dir to <tt>.\..\$(Platform)\tmp\$(Configuration)_static\</tt></li><br />
<li>Change Target Name to libexpatMT</li><br />
<li>Configuration Properties, Librarian, Output File, change Output File to <tt>inherit from parent or project defaults</tt></li><br />
<li>Configuration Properties, C++, Output Files, change ASM List Location, Object File Name, and Program DB File Name to <tt>inherit from parent or project defaults</tt></li><br />
<br />
<li>Choose Build > Batch Build</li><br />
<li>Select Build for Project expat_static with <br/><br />
{| class="wikitable" <br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | 32-Bit<br />
! style="padding:5px; text-align:left" | 64-Bit<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | Solution Config: "Debug" with Platform: "Win32"<br/><br />
Solution Config: "Release" with Platform: "Win32"<br />
| style="padding:5px; text-align:left" | Solution Config: "Debug" with Platform: "x64"<br/><br />
Solution Config: "Release" with Platform: "x64"<br />
|}</li><br />
<li>Click Build</li><br />
<li>Close Visual C++ 2010 Express</li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The include files reside in<br />
<tt><SDKHOME>\expat-2.0.1\lib</tt><br />
<br />
The libraries reside in<br />
<tt><SDKHOME>\expat-2.0.1\win32\bin\Debug</tt> and<br />
<tt><SDKHOME>\expat-2.0.1\win32\bin\Release</tt> <br/><br />
<tt><SDKHOME>\expat-2.0.1\x64\bin\Debug</tt> and<br />
<tt><SDKHOME>\expat-2.0.1\x64\bin\Release</tt><br />
<br />
=== Exiv2 ===<br />
<br />
Exiv2 depends on following SDK components:<br />
<ul><br />
<li>wxWidgets</li><br />
<li>GetText</li><br />
<li>Expat</li><br />
</ul><br />
Prepare these components before Exiv2.<br />
<br />
<ol><br />
<li>Decompress the file <tt>exiv2-0.20.tar.gz</tt> to directory <tt><SDKHOME></tt></li><br />
<li>Apply the <tt>exiv2-0.20.diff</tt> patch [[Hugin SDK (MSVC 2008) Patches#exiv2]]</li><br />
<li>(64-bit Only)Apply the <tt>exiv2-0.20.x64.diff</tt> patch</li><br />
<li>Open solution file <tt><SDKHOME>\exiv2-0.20\msvc\exiv2.sln</tt></li><br />
<li>In the Solution Explorer, select "exiv2lib"</li><br />
<li>Right-click exiv2lib, and choose Properties, select All Configurations, and All Platforms</li><br />
<li>Under Configuration Properties, General, change Output Dir and Intermediate Dir to <tt>inherit from parent or project defaults</tt></li><br />
<li>Change Target Name to exiv2</li><br />
<li>Configuration Properties, C++, General, change Treat Warnings as Errors to No</li><br />
<li>Configuration Properties, Librarian, Output File, change Output File to <tt>inherit from parent or project defaults</tt></li><br />
<br />
<li>Right-click exiv2lib, and choose Properties, select All Configurations, and All Platforms</li><br />
<li>Under Configuration Properties, General, change Output Dir and Intermediate Dir to <tt>inherit from parent or project defaults</tt></li><br />
<li>TODO update reference for wxWidgets-2.8.11 (from wxWidgets-2.8.10 to wxWidgets-2.8.11)</li><br />
<li>Choose Build > Batch Build</li><br />
<li>Select Build for Project exiv2lib with <br/><br />
{| class="wikitable" <br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | 32-Bit<br />
! style="padding:5px; text-align:left" | 64-Bit<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | Solution Config: "Debug" with Platform: "Win32"<br/><br />
Solution Config: "Release" with Platform: "Win32"<br />
| style="padding:5px; text-align:left" | Solution Config: "Debug" with Platform: "x64"<br/><br />
Solution Config: "Release" with Platform: "x64"<br />
|}</li><br />
<li>Click Build</li><br />
<li>Close Visual C++ 2010 Express</li><br />
<li>Create the directory <tt><SDKHOME>\exiv2-0.20\msvc\lib</tt></li><br />
<li>Copy the following files to this directory and rename them as specified in Destination column.<br />
<br />
{| class="wikitable"<br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | Source<br />
! style="padding:5px; text-align:left" | Destination<br />
|-<br />
| style="padding:5px; text-align:left" | <tt><SDKHOME>\exiv2-0.20\msvc\bin\Debug\exiv2.lib</tt><br />
| style="padding:5px; text-align:left" | <tt><SDKHOME>\exiv2-0.20\msvc\lib\''exiv2d''.lib</tt><br />
|-<br />
| style="padding:5px; text-align:left" | <tt><SDKHOME>\exiv2-0.20\msvc\bin\Release\exiv2.lib</tt><br />
| style="padding:5px; text-align:left" | <tt><SDKHOME>\exiv2-0.20\msvc\lib\exiv2.lib</tt><br />
|-<br />
| style="padding:5px; text-align:left" | <tt><SDKHOME>\expat-2.0.1\win32\bin\Debug\libexpatMT.lib</tt><br />
| style="padding:5px; text-align:left" | <tt><SDKHOME>\exiv2-0.20\msvc\lib\''libexpatd''.lib</tt><br />
|-<br />
| style="padding:5px; text-align:left" | <tt><SDKHOME>\expat-2.0.1\win32\bin\Release\libexpatMT.lib</tt><br />
| style="padding:5px; text-align:left" | <tt><SDKHOME>\exiv2-0.20\msvc\lib\''libexpat''.lib</tt><br />
|}<br />
</li><br />
<li> Similar for msvc\lib\x64\ </li><br />
</ol><br />
<br />
'''Comment'''<br />
<br />
When using exiv2 0.19 (which works better with bigger files), copy and rename also the following files:<br />
<br />
{| class="wikitable"<br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | Source<br />
! style="padding:5px; text-align:left" | Destination<br />
|-<br />
| style="padding:5px; text-align:left" | <tt><SDKHOME>\exiv2-0.19\msvc\xmpsdk\Debug\xmpsdk.lib</tt><br />
| style="padding:5px; text-align:left" | <tt><SDKHOME>\exiv2-0.19\msvc\lib\''xmpsdkd''.lib</tt><br />
|-<br />
| style="padding:5px; text-align:left" | <tt><SDKHOME>\exiv2-0.19\msvc\xmpsdk\Release\xmpsdk.lib</tt><br />
| style="padding:5px; text-align:left" | <tt><SDKHOME>\exiv2-0.19\msvc\lib\xmpsdk.lib</tt><br />
|}<br />
<br />
Similar for msvc\lib\x64\ <br/><br />
<br />
'''Result'''<br />
<br />
The include files reside in<br />
<tt><SDKHOME>\exiv2-0.20\msvc\include</tt><br />
<br />
The libraries reside in<br />
<tt><SDKHOME>\exiv2-0.20\msvc\lib</tt> and <tt>lib\x64</tt><br />
<br />
=== GLEW ===<br />
<br />
<ol><br />
<li>Decompress the file <tt>glew-1.5.1-src.zip</tt> to directory <tt><SDKHOME></tt></li><br />
<li>Apply the <tt>glew.diff</tt> patch [[Hugin SDK (MSVC 2008) Patches#glew]]</li><br />
<li>Open the file <tt><SDKHOME>\glew\build\vc6\glew.sln</tt></li><br />
<li>Let the conversion wizard run.</li><br />
<li>(64-bit) For the glew_static project, right-click Properties, for each x64 configuration, change:<br />
<ol><br />
<li>Configuration Properties, General, Intermediate Dir, change <tt> .\static/debug\ </tt> to <tt> .\static\$(Platform)\debug\ </tt></li><br />
<li>Configuration Properties, Librarian, Output File, change <tt>../../lib/glew32sd.lib</tt> to <tt>../../lib/glew64sd.lib</tt> and change Target Machine to X64</li><br />
<li>Configuration Properties, C++, Output Files, change ASM List Location, Object File Name, and Program DB File Name to <tt>inherit from parent or project defaults</tt></li><br />
</ol><br />
<li>Choose Build > Batch Build</li><br />
<li>Select Build for Project glew_static with Solution Config <br/><br />
{| class="wikitable" <br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | 32-Bit<br />
! style="padding:5px; text-align:left" | 64-Bit<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | Solution Config: "Debug" with Platform: "Win32"<br/><br />
Solution Config: "Release" with Platform: "Win32"<br />
| style="padding:5px; text-align:left" | Solution Config: "Debug" with Platform: "x64"<br/><br />
Solution Config: "Release" with Platform: "x64"<br />
|}</li><br />
<li>Click Build</li><br />
<li>Close Visual C++ 2010 Express </li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The include files reside in<br />
<tt><SDKHOME>\glew\include</tt><br />
<br />
The libraries reside in<br />
<tt><SDKHOME>\glew\lib</tt><br />
<br />
{| class="wikitable" width="100%"<br />
|-<br />
! style="padding:5px; text-align:left" | Note<br />
|-<br />
| style="padding:5px; text-align:left" | The GLEW include files are typically included by a statement like<br/><tt>#include "GL/glew.h"</tt><br/>Therefore the base directory of the GLEW include files is <tt><SDKHOME>\glew\include</tt><br />
|}<br />
<br />
=== Panorama Tools ===<br />
<br />
Panorama Tools depends on following SDK component:<br />
<ul><br />
<li>wxWidgets</li><br />
</ul><br />
Prepare this component before Panoroma Tools.<br />
<br />
<ol><br />
<li>Set one windows environment variables:<br />
<ul><br />
<li>Set variable <tt>WXWIDGETS_HOME</tt> to wxWidgets base folder <tt><SDKHOME>\wxWidgets-2.8.11</tt></li><br />
<li>Alternative: fix the LocalDefs.vsprops file next to the .sln file to point to wxWidgets base folder <tt><SDKHOME>\wxWidgets-2.8.11</tt>. This can be changed inside MSVC: View .. Property Manager, pano13 LocalDefs .. Common Properties .. User Macros </li><br />
</ul><br />
For changed environment variables to take effect you may have to logout and login.<br />
</li><br />
<li>Create the directory <tt><SDKHOME>\libpano\pano13</tt></li><br />
<li>In explorer right-click on created directory <tt><SDKHOME>\libpano\pano13</tt></li>, and then choose SVN Checkout from the shortcut menu. The Checkout dialog appears.</li><br />
<li>In "URL of repository" field enter following address:<br />
<pre><br />
https://panotools.svn.sourceforge.net/svnroot/panotools/trunk/libpano<br />
</pre><br />
</li><br />
<li>Click OK</li><br />
<li>After checkout has finished click OK</li><br />
<li>Open solution file <tt><SDKHOME>\libpano\pano13\libpano.sln</tt>, let the upgrade wizard run.</li><br />
<li>Select all projects, then right-click and choose Properties, select All Configurations, and All Platforms</li><br />
<li>Under Configuration Properties, General, change Platform Toolset from v100 to Windows7.1SDK</li><br />
<li>Under Configuration Properties, General, change Output Dir and Intermediate Dir to <tt>$(Configuration)\$(Platform)\</tt> (Note: already done in 2.9.17)</li><br />
<li>Temporary 2.9.17 fixes: optimize.c, change brackets to quotes, "filter.h" and "adjust.h". Release build, linker, wxWidgets\lib\vc_amd64_lib instead of vc_lib64. Get tools/*.rc from svn. (Sept 7, 2010)</li><br />
<li>Select your platform in the Solution Platform pull-down menu</li><br />
<li>Select "Debug CMD" in Solution Configuration pull-down menu</li><br />
<li>Select project pano13 in Solution Explorer, and then choose Build > Project Only > Build Only pano13</li><br />
<li>Add to pano13: sys_compat_win.c<br />
<li>Select "Release CMD" in Solution Configuration pull-down menu, and then choose Build > Build Solution (Note: multi-core machines, right click and build each project individually, skipping PTAInterpolate. Avoids log-file write conflict.</li><br />
<li>Close Visual C++ 2010 Express </li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The applications reside in<br />
<tt><SDKHOME>\libpano\pano13\tools\Release CMD\Win32</tt> or <tt>x64</tt><br />
<br />
The include files reside in<br />
<tt><SDKHOME>\libpano\pano13</tt><br />
<br />
The libraries reside in<br />
<tt><SDKHOME>\libpano\pano13\Debug CMD\Win32</tt> or <tt>x64</tt> and <br />
<tt><SDKHOME>\libpano\pano13\Release CMD\Win32</tt> or <tt>x64</tt><br />
<br />
{| class="wikitable" width="100%"<br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | Note<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | The applications have to be built in release version only. Therefore only pano13 library has to be built in Debug configuration.<br />
|}<br />
<br />
=== libxml2 ===<br />
<br />
Note: required by autopano-sift-c only, not by enblend or hugin. Untested and unchanged from MSVC 2008 version because autopano-sift-c untested.<br />
<ol><br />
<li>Decompress the file <tt>libxml2-sources-2.7.3.tar.gz</tt> to directory <tt><SDKHOME></tt></li><br />
<li><br />
{| class="wikitable" <br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | 32-Bit Directions<br />
! style="padding:5px; text-align:left" | 64-Bit Directions<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <ol><li>To open a Visual Studio command prompt choose Start > Programs > Microsoft Visual C++ 2008 Express Edition > Visual Studio Tools > Visual Studio 2008 Command Prompt</li></ol><br />
| style="padding: 5px; text-align:left" | <ol><br />
<li>Open a Windows SDK prompt by choosing Start -> Programs -> Microsoft Windows SDK v6.1 -> CMD Shell</li><br />
<li>On the command prompt, enter the following command without any line breaks and press the Return/Enter key:<br/><br />
<pre><br />
setenv /Release /x64 /xp<br />
</pre><br />
It should now refresh and say<br />
<pre><br />
Setting SDK environment relative to <path where you installed the SDK><br />
Targeting Windows XP x64 RELEASE<br />
</pre></li><br />
</ol><br />
|}<br />
</li><br />
<br />
<li>On command prompt change directory to <tt><SDKHOME>\libxml2-2.7.3\win32</tt><br/><br />
'''Example'''<br />
<pre><br />
Setting environment for using Microsoft Visual Studio 2008 x86 tools.<br />
<br />
C:\Program Files\Microsoft Visual Studio 9.0\VC>d:<br />
<br />
D:\>cd \usr\src\SDK\libxml2-2.7.3\win32 <br />
<br />
D:\usr\src\SDK\libxml2-2.7.3\win32><br />
</pre><br />
<br />
<li>Enter each of the following two commands without any line break and press the Return key.<br />
<pre><br />
cscript configure.js ftp=no http=no iconv=no cruntime=/MT<br />
nmake -f makefile.msvc libxmla<br />
</pre><br />
</li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The include files reside in<br />
<tt><SDKHOME>\libxml2-2.7.3\include</tt><br />
<br />
The libraries reside in<br />
<tt><SDKHOME>\libxml2-2.7.3\win32\bin.msvc</tt><br />
<br />
{| class="wikitable" width="100%"<br />
|-<br />
! style="padding:5px; text-align:left" | Notes<br />
|-<br />
| style="padding:5px; text-align:left" | <ul><br />
<li>During build process temporary object files are generated in directory<br />
<tt><SDKHOME>\libxml2-2.7.3\win32\int.a.msvc</tt>.<br />
This directories may be deleted to save disc space.</li><br />
<li>Hugin does not depend on libxml2 library, but autopano-sift-C. Therefore it is included in this SDK.</li><br />
</ul><br />
|}<br />
<br />
=== autopano-sift-C ===<br />
<br />
Note: Untested and unchanged from MSVC 2008 version because of patent restrictions for U.S.-based author ([[User:Helser|Aron Helser]]).<br/><br />
Autopano-SIFT-C depends on following SDK components:<br />
<ul><br />
<li>libxml2</li><br />
<li>Panorama Tool's pano13 library</li><br />
<li>wxWidgets</li><br />
</ul><br />
Prepare these components before Autopano-SIFT-C.<br />
<br />
<ol><br />
<li>Create the directory <tt><SDKHOME>\autopano-sift-C-trunk</tt></li><br />
<li>In explorer right-click on created directory <tt><SDKHOME>\autopano-sift-C-trunk</tt>, and then choose SVN Checkout from the shortcut menu. The Checkout dialog appears.</li><br />
<li>In "URL of repository" field enter following address:<br />
<pre><br />
https://hugin.svn.sourceforge.net/svnroot/hugin/autopano-sift-C/trunk<br />
</pre><br />
</li><br />
<li>Click OK</li><br />
<li>After checkout has finished click OK</li><br />
<li>Start CMake (cmake-gui). The CMake dialog appears.</li><br />
<li>In "Where is the source code" field enter<br />
<pre><br />
<SDKHOME>\autopano-sift-C-trunk<br />
</pre><br />
Alternatively click Browse Source to point to this directory</li><br />
<li>In "Where to build the binaries" field enter<br />
<pre><br />
<SDKHOME>\autopano-sift-C<br />
</pre><br />
</li><br />
<li>Click Configure<br/><br />
If a dialog appears, which asks to create the build directoy, click Yes.<br/><br />
A dialog appears, where you can specify the generator for the project.</li><br />
<li><br />
{| class="wikitable" <br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | 32-Bit Directions<br />
! style="padding:5px; text-align:left" | 64-Bit Directions<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | Select "Visual Studio 9 2008" and select option "Use default native compilers"<br />
| style="padding:5px; text-align:left" | Select "Visual Studio 9 2008 Win64" and select option "Use default native compilers"<br />
|}</li><br />
<li>Click Finish<br/><br />
In the Name and Value list the entries are shown with red background.</li><br />
<li>Click Configure</li><br />
<li>Click Generate</li><br />
<li>Close CMake</li><br />
<li>Open solution file <tt><SDKHOME>\autopano-sift-C\autopano-sift-C.sln</tt></li><br />
<li>Select Release in Solution Configuration pull-down menu, and then choose Build > Build Solution</li><br />
<li>Select project INSTALL in Solution Explorer, and then choose Build > Project Only > Build Only INSTALL</li><br />
<li>Close Visual C++ 2008 Express Edition</li><br />
<li><br />
Copy the directories <tt>bin</tt> and <tt>shared</tt> from <tt><SDKHOME>\autopano-sift-C\INSTALL\FILES</tt> to <tt><SDKHOME>\autopano-sift-C</tt></li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The applications reside in<br />
<tt><SDKHOME>\autopano-sift-C\bin</tt><br />
<br />
The manual pages reside in<br />
<tt><SDKHOME>\autopano-sift-C\shared</tt><br />
<br />
{| class="wikitable" width="100%"<br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | Note<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | To save disk space you may delete all files and directories in <tt><SDKHOME>\autopano-sift-C</tt>, except the subdirectories <tt>bin</tt> and <tt>shared</tt>.<br />
|}<br />
<br />
=== Freeglut ===<br />
<ol><br />
<li>Decompress the file <tt>freeglut-2.6.0.tar.gz</tt> to directory <tt><SDKHOME></tt></li><br />
<li>Open the file <tt><SDKHOME>\freeglut-2.6.0\VisualStudio2008Static\freeglut.sln</tt></li><br />
<li>Select "Debug" in the Solution Configuration pull-down menu. </li><br />
<li>Select project freeglut in Solution Explorer, and then choose Build > Project Only > Build Only freeglut</li><br />
<li>Select "Release" in the Solution Configuration pull-down menu. </li><br />
<li>Select project freeglut in Solution Explorer, and then choose Build > Project Only > Build Only freeglut</li><br />
<li>Close Visual Studio C++ 2010 Express </li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The library resides in <tt><SDKHOME>\freeglut-2.6.0\VisualStudio2008Static\Debug</tt> and <tt><SDKHOME>\freeglut-2.6.0\VisualStudio2008Static\Release</tt><br />
<br />
=== GNU Make ===<br />
<ol><br />
<li>Decompress the file <tt>make-3.81.tar.gz</tt> to directory <tt><SDKHOME></tt></li><br />
<li>Open the file <tt><SDKHOME>\make-3.81\make_msvc_net2003.sln</tt> (Confirm conversion.)</li> <br />
<li>Select "Release" in the Solution Configuration pull-down menu. </li><br />
<li>Select project make_msvc.net2003 Solution Explorer, and then choose Build > Project</li><br />
<li>Close Visual Studio C++ 2010 Express </li><br />
<li>Rename the file <tt><SDKHOME>\make-3.81\Release\make_msvc.net2003.exe</tt> to <tt><SDKHOME>\make-3.81\Release\make.exe</tt><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The executable make.exe resides in <tt><SDKHOME>\make-3.81\Release\</tt><br />
<br />
(All other files in this directory can be deleted to save space.)<br />
<br />
--Created: [[User:Helser|Aron Helser]] 16:20, 29 June 2010 (UTC)<br />
<br />
=== Templatized C++ Command Line Parser Library (tclap) ===<br />
<br />
<ol><br />
<li>Decompress the file <tt>tclap-1.2.0.tar.gz</tt> to directory <tt><SDKHOME>\tclap-1.2.0</tt></li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The include files reside in<br />
<tt><SDKHOME>\tclap-1.2.0\include\tclap</tt><br />
<br />
=== Glib library ===<br />
<br />
Needed by the lensfun library<br />
<br />
<ol><br />
<li> Decompress the file <tt>glib-2.28.8.tar.bz2</tt> to directory <tt><SDKHOME>\glib-2.28.8</tt></li><br />
<li> Open project file in <tt>glib\2.28.8\build\win32\vs10\</tt> </li><br />
<li> Select "Release" in the Solution Configuration pull-down menu. </li><br />
<li> '''64-bit only:''' Select "x64" in the Platform pull-down menu. </li><br />
<li> Do the following modifications: <br />
<ul><br />
<li> Remove the projects glib-compile-schemas, glib-genmarshal, gsettings, gspawn-win32-helper, gspawn-win32-helper-console and testglib. They are not needed. </li><br />
<li> Change type to "static libary (.lib)" for all projects.</li><br />
<li> Change run-time library to "Multi-threaded /MT" for all projects.</li><br />
<li> Project gio: Replace preprocessor _USRDLL directive with GIO_STATIC_COMPILATION</li><br />
<li> Project glib, gmodule, gthread: Replace preprocessor _USRDLL directive with GLIB_STATIC_COMPILATION</li><br />
<li> Project gobject: Replace preprocessor _USRDLL directive with GOBJECT_STATIC_COMPILATION</li><br />
<li> Start building. It will create some config file and will then fail with error messages regarding intl.h </li><br />
<li> Open <tt><SDKHOME>\glib-2.28.8\config.h</tt>, comment out line 29: <tt> // #define ENABLE_NLS 1 </tt> </li><br />
<li> Project gio: Add path to zlib includes in wxWidgets to search path: <SDKHOME>\wxWidgets-x.x.x\src\zlib </li><br />
<li> '''64-bit only:''' Change target machine to "MachineX64 (/MACHINE:X64)" for all projects. </li><br />
<li> Open menu <tt>View, Properties manager</tt> and expand INSTALL project, go to Release|Win32; glib.props; select properties, in User macros change <tt>CopyDir</tt> and <tt>GlibEtcInstallRoot</tt> from <tt>..\..\..\..\..\vs10\$(Platform)</tt> to <tt>..\..\..\</tt><br />
<li> Build target INSTALL </li><br />
</ul><br />
</li><br />
<li> Copy the all lib files from <tt><SDKHOME>\glib-2.28.8\build\Win32\vs10\Release\Win32\bin</tt> (for 64-bit version in <tt><SDKHOME>\glib-2.28.8\build\Win32\vs10\Release\x64\bin</tt>) and <tt><SDKHOME>\glib-2.28.8\lib</tt>.</li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The include files reside in <tt><SDKHOME>\glib-2.28.8\include</tt>, the libraries in <tt><SDKHOME>\glib-2.28.8\lib</tt><br />
<br />
=== Lensfun library ===<br />
<br />
<ol><br />
<li> Pull from subversion: svn://svn.berlios.de/lensfun to <tt><SDKHOME>\lensfun-svn</tt> </li><br />
<ul><br />
<li> In Explorer go to <tt><SDKHOME></tt>, open context menu (right mouse button), select "SVN Checkout", give URL: <tt>svn://svn.berlios.de/lensfun</tt> and path <tt><SDKHOME>\lensfun-svn</tt> </li><br />
</ul><br />
<li> Build library with CMake <br />
<ul><br />
<li> Start CMake-GUI </li><br />
<li> Point "Where is the source code:" to <tt><SDKHOME>\lensfun-svn</tt> </li><br />
<li> Point "Where to build:" to <tt><SDKHOME>\build-lensfun</tt> </li><br />
<li> Click Configure and select "Visual Studio 10" (or "Visual Studio 10 Win64" for 64-bit) </li><br />
<li> Set option <tt>BUILD_STATIC</tt> to on/TRUE </li><br />
<li> Check <tt>GLIB2_BASE_DIR</tt> and set to your GLIB2 directory. </li><br />
<li> Click Configure again, then Generate </li><br />
</ul><br />
</li><br />
<li> Open generated project file lensfun.sln in <tt><SDKHOME>\build-lensfun</tt>, select "Release" in the Solution Configuration pull-down menu and build target INSTALL </li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
All necessary files reside in <tt><SDKHOME>\lensfun</tt><br />
<br />
=== Nullsoft Scriptable Install System (NSIS) ===<br />
Note: Only needed to build Hugin Setup installer<br />
<ol><br />
<li>Run the NSIS installer, <tt>nsis-2.46-setup.exe</tt>, installing to the default location.</li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
NSIS should be installed to <tt><DRIVE>\Program Files\NSIS</tt><br />
<br />
[[Category:Software:Hugin]]<br />
[[Category:Software:Hugin:Compiling]]<br />
[[Category:Software:Platform:Windows]]</div>Morrayhttps://wiki.panotools.org/index.php?title=Hugin_SDK_(MSVC_2010)&diff=15262Hugin SDK (MSVC 2010)2013-03-15T20:25:47Z<p>Morray: /* Panorama Tools */</p>
<hr />
<div>Hugin depends on different components like libraries and tools, which are not available on a common Windows system. All these components can be combined to a Hugin Software Development Kit (SDK). This article will eventually give step-by-step instructions to build such SDK for Hugin using Microsoft Visual C++ 2010 (MSVC 2010) Express Edition and precompiled dependencies. <br />
<br />
'''Note: Work in Progress''': The SDK, Hugin and enblend have all been built successfully with MSVC 2010 Express, on Windows 7 x64 Professional, as of July 6, 2010. However, the instructions below are probably not complete, and may be specific to Windows 7. This article has been copied wholesale from [[Hugin SDK (MSVC 2008)]], and has been updated as the steps were successfully completed. <br />
<br />
This article will construct native 32-bit and 64-bit versions. When appropriate, steps that only apply to the 32-bit or 64-bit versions will be noted as (32-bit) or (64-bit), and you can safely ignore them if you are not targeting that particular version. In order to compile a 64-bit version of the Hugin SDK, one does not need a 64-bit computer. However, if they wish to test or debug the binaries, or for some projects (such as OpenEXR) which execute compiled binaries as part of their build step, this will not necessarily be possible on Win32.<br />
<br />
First of all an overview is given over the contents of the SDK and the tools that are necessary to build the SDK.<br />
<br />
The build steps for each component are written like a walk-through and annotated on the end of each section.<br />
<br />
Maybe some of the described tools and packages, especially those fetched from Mercurial (Hg) repository, will change over time and/or become obsolete. Hence it is likely that some steps will become invalid or won't work any more.<br />
<br />
The SDK is structured so that each component resides in its own subdirectory. This approach is different to other platforms like Linux, where some common directories are available to store include files, libraries and applications. The files of a component are spread over all these directories. Both approaches to structure the files in a file system have its assets and drawbacks.<br />
<br />
The base directory of the SDK is denoted as <tt><SDKHOME></tt> in this article. Replace <tt><SDKHOME></tt> by directory name where you store the SDK on your system. In the examples <tt><SDKHOME></tt> is replaced by the directory name <tt>D:\usr\src\SDK</tt>.<br />
<br />
== Prerequisites ==<br />
<br />
To build the SDK some tools are required that are listed in the table below. Download the tools and install them. The destination directory of each tool is arbitrary. If you are uncertain, choose the default given in the setup dialog of each tool.<br />
<br />
{| class="wikitable" width="100%"<br />
|- valign="top"<br />
! style="padding:5px; text-align:left" width="30%" | Tool<br />
! style="padding:5px; text-align:left" | Description<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | Microsoft Visual C++ 2010 Express Edition<br />
| style="padding:5px; text-align:left" | Compiler, Debugger and IDE<br/>Visit [http://www.microsoft.com/express/vc/ Download page] <br>If compiling for 64-bit, you will need to download the SDK, listed next. <br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | (x64 Only) Microsoft Windows SDK for Windows 7 and .NET Framework 4<br />
| style="padding:5px; text-align:left" | x64 Compiler, Libraries, and Headers<br/>Visit [http://go.microsoft.com/fwlink/?LinkID=191420]<br> When installing, make sure to include the Visual C++ compilers for x64 (under Developer Tools) and the Header Files and x64 libraries (under Windows Headers and Libraries). Optionally consider installing all of the SDK, as it makes compiling generally easier.<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | CMake 2.8.1 (2010-04-05)<br />
| style="padding:5px; text-align:left" | Generator of solution and project files for MSVC 2010<br/>Visit [http://www.cmake.org/cmake/resources/software.html#latest Download page] or download [http://www.cmake.org/files/v2.8/cmake-2.8.1-win32-x86.exe <tt>cmake-2.8.1-win32-x86.exe</tt>]<br> Leave default 'Don't add Cmake to system path' <br> Follow the note on the download page to replace CMakeVS10FindMake.cmake <br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | (skip) TortoiseSVN 1.6.1.16129 (2009-02-13)<br />
| style="padding:5px; text-align:left" | (skip) Tool to handle source codes in Subversion repositories<br/>Visit [http://tortoisesvn.net/downloads Download page] or download<br/> [http://downloads.sourceforge.net/tortoisesvn/TortoiseSVN-1.6.1.16129-win32-svn-1.6.1.msi <tt>TortoiseSVN-1.6.1.16129-win32-svn-1.6.1.msi (32-bit)</tt>] or<br/> [http://downloads.sourceforge.net/tortoisesvn/TortoiseSVN-1.6.1.16129-x64-svn-1.6.1.msi <tt>TortoiseSVN-1.6.1.16129-x64-svn-1.6.1.msi (64-bit)</tt>]<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | TortoiseHg 1.0.4 (2010-06-11)<br />
| style="padding:5px; text-align:left" | Tool to handle source codes in Mercurial repositories<br/>Visit [http://tortoisehg.bitbucket.org/ Download page]<br/> Choose x64 if appropriate for you. <br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | 7-Zip 4.65 (2009-02-03)<br />
| style="padding:5px; text-align:left" | Tool to decompress the source packages<br/>Visit [http://www.7-zip.org/download.html Download page] or download [http://downloads.sourceforge.net/sevenzip/7z465.exe <tt>7z465.exe (32-bit)</tt>] or [http://downloads.sourceforge.net/sevenzip/7z465-x64.msi <tt>7z465-x64.msi (64-bit)</tt>]<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | (skip - not required for Enblend 4.0) Java SE Development Kit 6 Update 20<br />
| style="padding:5px; text-align:left" | (skip) Java Development Kit (JDK)<br/>Visit [http://java.sun.com/javase/downloads/index.jsp Download page]<br />
|}<br />
<br />
== Contents of the Hugin SDK ==<br />
<br />
=== Precompiled Version (32-bit only) ===<br />
<br />
This is what we are working towards: For those who want to avoid to build the whole SDK from scratch, the last available precompiled SDK is for MSVC 2008, for an older version of Hugin.<br />
<br />
{| class="wikitable" width="100%"<br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | Precompiled Hugin SDK (Win32)<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | [http://hugin.panotools.org/sdk/MSVC/Hugin-SDK-20090509-win32.exe <tt>Hugin-SDK-20090509-win32.exe </tt>] (76 MiB, 2009-05-09)<br />
|}<br />
<br />
=== Building from Source ===<br />
The contents of the Hugin SDK is shown in the following table. Download the packages, except the packages fetched from Hg/Subversion repository.<br />
<br />
{| class="wikitable" width="100%"<br />
|- valign="top"<br />
! style="padding:5px; text-align:left" width="30%" | Directory<br />
! style="padding:5px; text-align:left" | Description (Website)<br/>Download package (Date of the package)<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>autopano-sift-C</tt><br />
| style="padding:5px; text-align:left" | Autopano-SIFT-C (http://hugin.sourceforge.net/)<br/>Mercurial repository<br/><br />
<tt>http://hugin.hg.sourceforge.net:8000/hgroot/hugin/autopano-sift-C</tt> from [[Hugin_Compiling_Ubuntu]](Note January 2010 / May 2010: Currently the autopano-sift-C SVN trunk, as well as Hg default tip, is unstable, use the 2.5.1 release tarball instead) <br/> 2011: With a working cpfind this is not necessary any more.<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>boost_1_43_0</tt><br />
| style="padding:5px; text-align:left" | Boost C++ libraries 1.43.0<br />
(http://www.boost.org/)<br/>[http://sourceforge.net/projects/boost/files/boost/1.43.0/boost_1_43_0.7z/download<br />
<tt>boost_1_43_0.7z</tt>]<br />
(2010-05-06)<br/>(skip) [http://sourceforge.net/projects/boost/files/boost-jam/3.1.18/boost-jam-3.1.18-1-ntx86.zip/download<br />
<tt>boost-jam-3.1.18-1-ntx86.zip</tt>] (2010-03-22)<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>Deploy</tt><br/><tt>OpenEXR</tt><br />
| style="padding:5px; text-align:left" | OpenEXR library 1.6.1 and IlmBase libraries 1.0.1 (http://www.openexr.com/)<br/>[http://download.savannah.nongnu.org/releases/openexr/ilmbase-1.0.1.tar.gz <tt>ilmbase-1.0.1.tar.gz</tt>] (2007-10-22)<br/>[http://download.savannah.nongnu.org/releases/openexr/openexr-1.6.1.tar.gz <tt>openexr-1.6.1.tar.gz</tt>] (2007-10-22)<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>enblend-enfuse-4.0</tt> <br />
| style="padding:5px; text-align:left" | Enblend 4.0 and Enfuse 4.0 (http://enblend.sourceforge.net/)<br/><br />
{| class="wikitable"<br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | 32-Bit<br />
! style="padding:5px; text-align:left" | 64-Bit<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | [http://downloads.sourceforge.net/enblend/enblend-enfuse-4.0.zip <tt>enblend-enfuse-4.0.zip</tt>] (2010-05-??)<br />
| style="padding:5px; text-align:left" | [http://downloads.sourceforge.net/enblend/enblend-enfuse-4.0.tar.gz <tt>enblend-enfuse-4.0.tar.gz</tt>] (2010-05-??)<br />
|}<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>exiftool</tt><br />
| style="padding:5px; text-align:left" | ExifTool 8.23 (http://www.sno.phy.queensu.ca/~phil/exiftool)<br/>[http://www.sno.phy.queensu.ca/~phil/exiftool/exiftool-8.23.zip <tt>exiftool-8.23.zip</tt>] (2010-06-20)<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>exiv2-0.20.0</tt><br />
| style="padding:5px; text-align:left" | Exiv2 C++ library 0.20 (http://www.exiv2.org/)<br/>[http://www.exiv2.org/exiv2-0.20.tar.gz <tt>exiv2-0.20.tar.gz</tt>] (2010-05-30)<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>expat-2.0.1</tt><br />
| style="padding:5px; text-align:left" | Expat XML Parser library 2.0.1 (http://sourceforge.net/projects/expat/)<br/>[http://downloads.sourceforge.net/expat/expat-2.0.1.tar.gz <tt>expat-2.0.1.tar.gz</tt>] (2007-06-05)<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>gettext</tt><br />
| style="padding:5px; text-align:left" | GNU gettext 0.13.1 and iconv library 1.9.1 (http://www.gnu.org/)<br/><br />
{| class="wikitable"<br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | 32-Bit<br />
! style="padding:5px; text-align:left" | (skip - need binaries only) 64-Bit<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <ul><li>[http://ftp.gnu.org/gnu/gettext/gettext-runtime-0.13.1.bin.woe32.zip <tt>gettext-runtime-0.13.1.bin.woe32.zip</tt>] (2004-01-20)</li><li>[http://ftp.gnu.org/gnu/gettext/gettext-tools-0.13.1.bin.woe32.zip <tt>gettext-tools-0.13.1.bin.woe32.zip</tt>] (2004-01-20)</li><li>[http://ftp.gnu.org/gnu/libiconv/libiconv-1.9.1.bin.woe32.zip <tt>libiconv-1.9.1.bin.woe32.zip</tt>] (2004-01-20)</li></ul><br />
| style="padding:5px; text-align:left" | (skip - use 32bit binaries) <ul><li> [http://ftp.gnu.org/gnu/libiconv/libiconv-1.9.1.tar.gz libiconv-1.9.1.tar.gz] (2003-05-27)</li><li>[http://ftp.gnu.org/gnu/gettext/gettext-0.13.1.tar.gz gettext-0.13.1.tar.gz] (2003-12-17)</li></ul><br />
|}<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>glew</tt><br />
| style="padding:5px; text-align:left" | OpenGL Extension Wrangler Library (GLEW) 1.5.1 (http://glew.sourceforge.net/)<br/>[http://downloads.sourceforge.net/glew/glew-1.5.1-src.zip <tt>glew-1.5.1-src.zip</tt>] (2008-11-03)<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>libpano\pano13</tt><br />
| style="padding:5px; text-align:left" | Panorama Tools and pano13 library (http://panotools.sourceforge.net/)<br/>Mercurial repository<br/><tt>http://panotools.hg.sourceforge.net:8000/hgroot/panotools/libpano</tt><br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>(autopano-sift-c only) libxml2-2.7.3</tt><br />
| style="padding:5px; text-align:left" | XML C parser and toolkit (http://www.xmlsoft.org/)<br/>[ftp://xmlsoft.org/libxml2/libxml2-sources-2.7.3.tar.gz <tt>libxml2-sources-2.7.3.tar.gz</tt>] (2009-01-18)<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>UnxUtils</tt><br />
| style="padding:5px; text-align:left" | (inutile si cygwin est installé) Utilitaires GNU portés sur plateforme Windows 32 bits (http://sourceforge.net/projects/unxutils/)<br/>[http://downloads.sourceforge.net/unxutils/UnxUtils.zip <tt>UnxUtils.zip</tt>] (2007-03-01)<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>wxWidgets-2.8.11</tt><br />
| style="padding:5px; text-align:left" | wxWidgets cross-platform GUI C++ framework 2.8.11 (http://www.wxwidgets.org/)<br/>[http://downloads.sourceforge.net/wxwindows/wxMSW-2.8.11.zip <tt>wxMSW-2.8.11.zip</tt>] (2009-03-17)<br />
<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>freeglut_2.6.0</tt><br />
| style="padding:5px; text-align:left" | Freeglut (http://freeglut.sourceforge.net/index.php)<br/> [http://prdownloads.sourceforge.net/freeglut/freeglut-2.6.0.tar.gz?download <tt>freeglut-2.6.0.tar.gz</tt>]<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>make_3.81</tt><br />
| style="padding:5px; text-align:left" | GNU make 3.81 (http://www.gnu.org/software/make/) <br/>[http://ftp.gnu.org/pub/gnu/make/make-3.81.tar.gz <tt>make-3.81.tar.gz</tt>] <br/> This package replaces UnxUtils inside hugin.<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>Templatized C++ Command Line Parser 1.2.0</tt><br />
| style="padding:5px; text-align:left" | tclap (http://tclap.sourceforge.net/)<br/> [http://sourceforge.net/projects/tclap/files/tclap-1.2.0.tar.gz/download <tt>tclap-1.2.0.tar.gz</tt>]<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>GLib</tt><br />
| style="padding:5px; text-align:left" | glib libary from GTK+ (http://www.gtk.org/)<br/> [http://www.gtk.org/download/win32.php <tt> Download site</tt>] <br/>I don't know, if the precompiled version work with lensfun/Hugin. Use the [http://ftp.gnome.org/pub/gnome/sources/glib/2.28/glib-2.28.8.tar.bz2 source distribution.]<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>Lensfun</tt><br />
| style="padding:5px; text-align:left" | lensfun library for reading/writing to lens database (http://lensfun.berlios.de/)<br/> You will need unreleased version 0.2.5.1 from subversion repository svn://svn.berlios.de/lensfun for full feature set<br />
<br />
|- valign="top"<br />
! colspan="2" | Additional files only necessary for building a 64-bit SDK<br />
|- valign="top"<br />
! style="padding:5px; text-align:left" width="30%" | Directory<br />
! style="padding:5px; text-align:left" | Description (Website)<br/>Download package (Date of the package)<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>(64-bit Enblend only) libxmi-1.2-1</tt> <br />
| style="padding:5px; text-align:left" | GNU libxmi 2-D rasterization library (Win32 port) (http://gnuwin32.sourceforge.net)<br/> [http://downloads.sourceforge.net/gnuwin32/libxmi-1.2-1-src.zip <tt>libxmi-1.2-1-src.zip</tt>] (2004-04-16)<br/><br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>(64-bit Enblend only) STLport-5.2.1</tt> <br />
| style="padding:5px; text-align:left" | STLport Standard Library (http://stlport.sourceforge.net/)<br/> [http://downloads.sourceforge.net/stlport/STLport-5.2.1.tar.gz <tt>STLport-5.2.1.tar.gz</tt>] (2008-12-10)<br/><br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>(64-bit Enblend only) lcms-1.18</tt> <br />
| style="padding:5px; text-align:left" | LittleCms Color management library (http://www.littlecms.com)<br/> [http://sourceforge.net/projects/lcms/files/lcms/1.18/lcms-1.18a.zip/download <tt>lcms-1.18a.zip</tt>] (2009-04-19)<br/><br />
2.0 has been released, but will require code updates to enblend.<br />
<br />
|- valign="top"<br />
! colspan="2" | Additional files only necessary for building Hugin Setup (NSIS Installer)<br />
|- valign="top"<br />
! style="padding:5px; text-align:left" width="30%" | Directory<br />
! style="padding:5px; text-align:left" | Description (Website)<br/>Download package (Date of the package)<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>NSIS</tt> <br />
| style="padding:5px; text-align:left" | Nullsoft Scriptable Install System (http://nsis.sourceforge.net/)<br/> [http://prdownloads.sourceforge.net/nsis/nsis-2.46-setup.exe?download <tt>nsis-2.46-setup.exe</tt>] (2009-12-06)<br/><br />
|}<br />
<br />
In the following subsections each component is discussed in detail. The order of the subsections seems random, but I describe the precompiled packages first, followed by the big packages, where some of the small packages depend on.<br />
<br />
The decompress step of each component contains seemingly inconsistent namings of destination directories. These were chosen mostly to satisfy Cmake. To check the right locations, each result section of every component's description contains a summary of the expected files. <br />
<br />
freeglut and gnu make were added after the 2009 SDK was constructed. <br />
<br />
<br />
==== Diff Files ====<br />
In order to make compilation simple, a series of patch files are included below that contain all the necessary changes, not only to compile the SDK, but to optionally compile an x64 version of the SDK. When directed, you will need to apply the patch file specified. If you are compiling for x64, there may be additional patches you need to apply.<br />
<br />
The download link for the patches is [https://bugs.launchpad.net/hugin/+bug/679695/+attachment/1741338/+files/hugin_patches.zip https://bugs.launchpad.net/hugin/+bug/679695/+attachment/1741338/+files/hugin_patches.zip]<br />
<br />
In order to apply a patch, you will first have needed to follow directions for the [[#UnxUtils|UnxUtils]] step. You cannot apply any patches before that step. <br />
<br />
'''Alternative:''' If you already have the Cygwin environment installed, you can install the 'patch' module and perform the patch commands at a cygwin prompt. Otherwise, UnxUtils is much simpler. However, cygwin patch seems to set the permissions of changed files so they can't be modified by normal users, so after patching do this:<br/><br />
Right-click the folder, Properties, Security tab, Advanced, Change Permissions, check Replace all child object perms...., click OK, OK, OK.<br />
<br />
To apply a patch, follow these directions:<br />
<ol><br />
<li>Start a Command Prompt by choosing Start -> Run and typing in "cmd.exe"</li><br />
<li>On the Command Prompt, change directory to <tt><SDKHOME></tt><br/><br />
'''Example'''<br />
<pre><br />
C:\Program Files\Microsoft\Windows SDK\v7.1>d:<br />
<br />
D:>cd \usr\src\SDK<br />
<br />
D:\usr\src\SDK><br />
</pre></li><br />
<li>On the command prompt, enter the following commands without any line breaks and press the Return/Enter key, substituting <SDKHOME> where appropriate:<br/><br />
<pre><br />
set PATH=%PATH%;<SDKHOME>\UnxUtils\usr\local\wbin<br />
</pre><br />
</li><br />
<li>On the command prompt, enter the following commands without any line breaks and press the Return/Enter key, substituting <PATCHFILE> with the name of the patch file to apply:<br/><br />
<pre><br />
patch -p 0 -i <PATCHFILE><br />
</pre><br />
'''NOTE:''' On Vista and later systems, the filename "patch.exe" is a protected file name which will always result in a UAC prompt if the file does not include a manifest (which UnxUtils version does not). This can be worked around by copying the file <tt><SDKHOME>\UnxUtils\usr\local\wbin\patch.exe</tt> to another file not containing the name, such as <tt><SDKHOME>\UnxUtils\usr\local\wbin\apply_diff.exe</tt>. Then substitute the command <tt>'patch'</tt> in the above command with <tt>'apply_diff'</tt><br />
</li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
If everything worked, you should see a list of filenames that were patched. <br />
'''Example'''<br />
<pre><br />
D:\usr\src\SDK>patch -p 0 -i libiconv-1.9.1.diff<br />
patching file 'libiconv-1.9.1/srclib/error.c'<br />
<br />
D:\usr\src\SDK><br />
</pre><br />
<br />
If there was an error, you may wish to consult the [[Hugin SDK (MSVC 2008) Patches]] page for instructions on what changes were contained in the patch.<br />
<br />
=== UnxUtils ===<br />
<br />
<ol><br />
<li>Create the directory <tt><SDKHOME>\UnxUtils</tt></li><br />
<li>Decompress the file <tt>UnxUtils.zip</tt> to created directory <tt><SDKHOME>\UnxUtils</tt></li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The applications reside in<br />
<tt><SDKHOME>\UnxUtils\bin</tt> and<br />
<tt><SDKHOME>\UnxUtils\usr\local\wbin</tt><br />
<br />
=== ExifTool ===<br />
<br />
<ol><br />
<li>Create the directory <tt><SDKHOME>\exiftool</tt></li><br />
<li>Decompress the file <tt>exiftool-8.23.zip</tt> to <tt><SDKHOME>\exiftool</tt></li><br />
<li>Rename the file <tt>exiftool(-k).exe</tt> to <tt>exiftool.exe</tt></li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The application resides in<br />
<tt><SDKHOME>\exiftool</tt><br />
<br />
=== GetText ===<br />
Binary only, 32-bit binaries work for a 64-bit build.<br />
<ol><br />
<li>Create the directory <tt><SDKHOME>\gettext</tt></li><br />
<li>Decompress the following files to created directory <tt><SDKHOME>\gettext</tt><br />
<ul><br />
<li><tt>gettext-runtime-0.13.1.bin.woe32.zip</tt></li><br />
<li><tt>gettext-tools-0.13.1.bin.woe32.zip</tt></li><br />
<li><tt>libiconv-1.9.1.bin.woe32.zip</tt></li><br />
</ul><br />
</li><br />
</ol><br />
'''Result'''<br />
<br />
The applications reside in<br />
<tt><SDKHOME>\gettext\bin</tt><br />
<br />
The include files reside in<br />
<tt><SDKHOME>\gettext\include</tt><br />
<br />
The libraries (unused) reside in<br />
<tt><SDKHOME>\gettext\lib</tt><br />
=== STLport (64-bit Enblend Only) ===<br />
<ol><br />
<li>Decompress the file <tt>STLport-5.2.1.tar.gz</tt> to directory <tt><SDKHOME></tt></li><br />
<li>Open a Windows SDK prompt by choosing Start -> Programs -> Microsoft Windows SDK v7.1 -> Windows SDK v7.1 Cmd Prompt</li><br />
<li>On the command prompt, enter the following command without any line breaks and press the Return/Enter key:<br/><br />
<pre><br />
setenv /Release /x64 /xp<br />
</pre><br />
It should now refresh and say<br />
<pre><br />
Setting SDK environment relative to <path where you installed the SDK><br />
Targeting Windows XP x64 RELEASE<br />
</pre></li><br />
<li>On the command prompt, change directory to <SDKHOME>\STLport-5.2.1<br/><br />
'''Example'''<br />
<pre><br />
C:\Program Files\Microsoft\Windows SDK\v6.1>d:<br />
<br />
D:>cd \usr\src\SDK\STLport-5.2.1<br />
<br />
D:\usr\src\SDK\STLport-5.2.1><br />
</pre></li><br />
<li>On the command prompt, enter the following commands without any line breaks and press the Return/Enter key:<br/><br />
<pre>configure msvc9 --with-static-rtl<br />
cd build/lib<br />
nmake clean install</pre><br />
</li><br />
<li>Compilation will fail, complaining about <br />
<pre>stlport\stl/_cstdlib.h(158) : error C2084: function '__int64<br />
abs(__int64)' already has a body </pre><br />
This indicates that the compiler didn't like the declaration on line 158 of <SDKHOME>\STLport-5.2.1\stlport\stl\_cstdlib.h - comment that line out, and compile again. It should succeed.</li><br />
<li>Close the Windows SDK command prompt window</li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The includes reside in <tt><SDKHOME>\STLport-5.2.1\stlport</tt><br/><br />
The libraries reside in <tt><SDKHOME>\STLport-5.2.1\lib</tt><br />
<br />
=== lcms-1.18 (64-bit Enblend Only) ===<br />
<ol><br />
<li>Decompress the file <tt>lcms-1.18a.tar.gz</tt> to directory <tt><SDKHOME></tt></li><br />
<li>Apply the <tt>lcms-1.18.diff</tt> patch</li><br />
<li>Open the file <tt><SDKHOME>\lcms-1.18\Projects\VC2008\lcms.sln</tt>. Allow conversion.</li><br />
<li>Select project lcms, right-click Properties</li><br />
<li>Select "Release" in the Solution Configuration pull-down menu. Select "x64" in the Solution Platform pull-down menu</li><br />
<li>Select project lcms in Solution Explorer, and then choose Build > Project Only > Build Only lcms</li><br />
<li> changes to output file and intermediate directory for x64 </li><br />
<li>Close Visual Studio C++ 2010 Express </li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The library resides in <tt><SDKHOME>\lcms-1.18\Lib\MS-x64</tt><br />
<br />
{| class="wikitable" width="100%"<br />
|-<br />
! style="padding:5px; text-align:left" | Note<br />
|-<br />
| style="padding:5px; text-align:left" | During build process temporary object files are stored in following directories<br />
<ul><br />
<li><tt><SDKHOME>\lcms-1.18\Projects\VC2008\LibDebug</tt></li><br />
<li><tt><SDKHOME>\lcms-1.18\Projects\VC2008\LibRelease</tt></li><br />
</ul><br />
Both directories may be deleted to save disk space.<br />
|}<br />
<br />
=== libxmi-1.2.1 (64-bit Enblend Only) ===<br />
<ol><br />
<li>Open the file <tt>libxmi-1.2-1.src.zip</tt> in 7-Zip</li><br />
<li>Open the "src" folder by double-clicking</li><br />
<li>Open the "libxmi" folder by double-clicking</li><br />
<li>Open the "1.2" folder by double-clicking</li><br />
<li>Extract "libxmi-1.2" to the directory <tt><SDKHOME></tt></li><br />
<li>Apply the <tt>libxmi-1.2.diff</tt> patch</li><br />
<li>Open <tt>libxmi.vcproj</tt>. Allow conversion.</li><br />
<li>Set default Output/Intermediate options for x64</li><br />
<li>Build libxmi, x64 Debug and Release</li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The libxmi-1.2 sources now reside in <tt><SDKHOME>\libxmi-1.2</tt><br />
The libxmi-1.2 libs now reside in <tt><SDKHOME>\libxmi-1.2\x64\Debug</tt> or <tt>Release</tt><br />
<br />
=== wxWidgets ===<br />
<ol><br />
<li>Decompress the file <tt>wxMSW-2.8.11.zip</tt> to directory <tt><SDKHOME></tt></li><br />
<li>Rename the directory <tt><SDKHOME>\wxMSW-2.8.11</tt> to <tt><SDKHOME>\wxWidgets-2.8.11</tt></li><br />
<li>Apply the <tt>wxWidgets-2.8.11.diff</tt> patch [[Hugin SDK (MSVC 2008) Patches#wxWidgets]]</li><br />
<li><br />
{| class="wikitable" width="100%"<br />
|- valign="top"<br />
! style="padding:5px; text-align:left" width="50%" | 32-Bit Directions<br />
! style="padding:5px; text-align:left" | 64-Bit Directions<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | To open a Visual Studio command prompt choose Start > Programs > Microsoft Visual Studio 2010 Express Edition > Visual Studio Command Prompt (2010)<br />
| style="padding:5px; text-align:left" | <ol><br />
<li>Open a Windows SDK prompt by choosing Start -> Programs -> Microsoft Windows SDK v1.1 -> Windows SDK 7.1 Command Prompt</li><br />
<li>On the command prompt, enter the following command without any line breaks and press the Return/Enter key:<br/><br />
<pre><br />
setenv /Release /x64 /xp<br />
</pre><br />
It should now refresh and say<br />
<pre><br />
Setting SDK environment relative to <path where you installed the SDK><br />
Targeting Windows XP x64 Release<br />
</pre></li><br />
</ol><br />
|}</li><br />
<br />
<li>On command prompt change directory to <tt><SDKHOME>\wxWidgets-2.8.11\build\msw</tt><br/><br />
'''Example'''<br />
<pre><br />
C:\Program Files\Microsoft Visual Studio 10.0\VC>d:<br />
<br />
D:\>cd \usr\src\SDK\wxWidgets-2.8.11\build\msw<br />
<br />
D:\usr\src\SDK\wxWidgets-2.8.11\build\msw><br />
</pre><br />
</li><br />
<li>Enter each of the following two commands without any line break and press the Return key<br/><br />
<br />
32-Bit Directions<br />
<pre><br />
nmake -f makefile.vc BUILD=debug UNICODE=1 SHARED=0 USE_OPENGL=1 RUNTIME_LIBS=static<br />
nmake -f makefile.vc BUILD=release UNICODE=1 SHARED=0 USE_OPENGL=1 RUNTIME_LIBS=static<br />
</pre><br />
<br />
64-Bit Directions<br />
<pre><br />
nmake -f makefile.vc BUILD=debug TARGET_CPU=AMD64 UNICODE=1 SHARED=0 USE_OPENGL=1 RUNTIME_LIBS=static<br />
nmake -f makefile.vc BUILD=release TARGET_CPU=AMD64 UNICODE=1 SHARED=0 USE_OPENGL=1 RUNTIME_LIBS=static<br />
</pre><br />
</li><br />
<li>Close the Windows SDK command prompt window</li><br />
<br />
</ol><br />
<br />
'''Result'''<br />
<br />
The include files reside in<br />
<tt><SDKHOME>\wxWidgets-2.8.11\include</tt> and its subdirectories<br />
<br />
Hugin also depends on following files<br />
<ul><br />
<li><tt><SDKHOME>\wxWidgets-2.8.11\src\jpg\*.h</tt></li><br />
<li><tt><SDKHOME>\wxWidgets-2.8.11\src\jpg\jconfig.vc</tt></li><br />
<li><tt><SDKHOME>\wxWidgets-2.8.11\src\png\*.h</tt></li><br />
<li><tt><SDKHOME>\wxWidgets-2.8.11\src\tiff\*.h</tt></li><br />
<li><tt><SDKHOME>\wxWidgets-2.8.11\src\zlib\*.h</tt></li><br />
</ul><br />
<br />
The libraries reside in<br />
<tt><SDKHOME>\wxWidgets-2.8.11\lib\vc_lib</tt> and/or<br />
<tt><SDKHOME>wxWidgets-2.8.11\lib\vc_amd64_lib</tt><br />
<br />
{| class="wikitable"<br />
|-<br />
! style="padding:5px; text-align:left" | Note<br />
|-<br />
| style="padding:5px; text-align:left" | During build process temporary object files are stored in following directories<br />
{| class="wikitable" width="100%"<br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | 32-Bit <br />
! style="padding:5px; text-align:left" | 64-Bit<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <ul><br />
<li><tt><SDKHOME>\wxWidgets-2.8.11\build\msw\vc_mswu</tt></li><br />
<li><tt><SDKHOME>\wxWidgets-2.8.11\build\msw\vc_mswud</tt></li><br />
</ul><br />
| style="padding:5px; text-align:left" | <br />
<ul><br />
<li><tt><SDKHOME>\wxWidgets-2.8.11\build\msw\vc_mswu_amd64</tt></li><br />
<li><tt><SDKHOME>\wxWidgets-2.8.11\build\msw\vc_mswud_amd64</tt></li><br />
</ul><br />
|}<br />
Both directories may be deleted to save disk space.<br />
|}<br />
<br />
=== Boost ===<br />
<br />
<ol><br />
<li>Decompress the file <tt>boost_1_43_0.7z</tt> to directory <tt><SDKHOME></tt></li><br />
<li>(skip) Decompress the file <tt>boost-jam-3.1.17-1-ntx86.zip</tt> to an arbitrary directory and copy the application <tt>bjam.exe</tt> to <tt><SDKHOME>\boost_1_39_0</tt></li><br />
<li>Open a Visual Studio command prompt, like you did with wxWidgets</li><br />
<li>On command prompt change directory to <tt><SDKHOME>\boost_1_43_0</tt><br/><br />
'''Example'''<br />
<pre><br />
C:\Dokuments and Settings\Guido>d:<br />
<br />
D:\>cd \usr\src\SDK\boost_1_43_0<br />
<br />
D:\usr\src\SDK\boost_1_43_0><br />
</pre><br />
</li><br />
<li>Enter the command 'bootstrap' to build bjam.exe</li><br />
<li>Enter the following command without line breaks and press Return key<br/><br />
{| class="wikitable" <br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | 32-Bit Directions<br />
! style="padding:5px; text-align:left" | 64-Bit Directions<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <pre><br />
bjam --with-date_time --with-thread --with-system --with-signals --with-regex --with-iostreams --with-filesystem --with-serialization toolset=msvc variant=debug variant=release link=static threading=multi runtime-link=static stage<br />
</pre><br />
After <tt>bjam.exe</tt> finishes a statement like the following should be printed in the command prompt window<br />
<pre><br />
...updated 56 targets...<br />
<br />
d:\usr\src\SDK\boost_1_43_0><br />
</pre><br />
| style="padding:5px; text-align:left" | <pre><br />
bjam --with-date_time --with-thread --with-system --with-signals --with-regex --with-iostreams --with-filesystem --with-serialization toolset=msvc variant=debug variant=release link=static threading=multi runtime-link=static address-model=64 stage<br />
</pre><br />
After <tt>bjam.exe</tt> finishes a statement like the following should be printed in the command prompt window<br />
<pre><br />
...updated 44 targets...<br />
</pre><br />
|}</li><br />
<li>To build both 32-bit and 64-bit directions, rename boost_1_43_0\stage\lib directory to lib_win32 after building 32-bit, and to lib_x64 after building the 64-bit targets</li><br />
<li>Close the Windows command prompt window</li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The include files reside in<br />
<tt><SDKHOME>\boost_1_43_0</tt> and its subdirectory <tt>boost</tt><br />
<br />
The libraries reside in<br />
<tt><SDKHOME>\boost_1_43_0\stage\lib</tt> (or lib_win32 and lib_x64)<br />
<br />
{| class="wikitable" width="100%"<br />
|-<br />
! style="padding:5px; text-align:left" | Notes<br />
|-<br />
|<ul><br />
<li>During build process temporary files are generated in <tt><SDKHOME>\boost_1_43_0\bin.v2</tt>. This directory may be deleted to save disk space.<br />
</li><br />
<li>Hugin needs only a subset of the Boost libraries, thus only these required libraries have to be built.<br/><br />
If you want to build all Boost libraries enter following command on the Windows command prompt instead of the command described above and press Return key.<br />
<pre><br />
bjam -–build-type=complete toolset=msvc stage<br />
</pre><br />
There are about 7GB disc space needed during build of all libraries (3.5GB for libraries and the same amount for the temporary files).<br />
</li><br />
<li>The Boost include files are typically included by a statement like<br/><br />
<tt>#include "boost/whatever.hpp"</tt><br/><br />
Therefore the base directory of the Boost include files is <tt><SDKHOME>\boost_1_43_0</tt><br />
</li><br />
<li>Only the following libraries are needed to build a release version of Hugin:<br />
<ul><br />
<li><tt>libboost_date_time-vc100-mt-s.lib</tt></li><br />
<li><tt>libboost_thread-vc100-mt-s.lib</tt></li><br />
</ul><br />
The files with "<tt>gd</tt>" in the filename, e.g. <tt>libboost_thread-vc100-mt-sgd-1_43.lib</tt>, are the debug libraries.<br />
The library files without "<tt>-1_43</tt>" suffix are automatically generated copies of the libraries with version suffix. They are used by CMake to detect the library directory.<br />
</li><br />
</ul><br />
|}<br />
<br />
=== OpenEXR ===<br />
<br />
OpenEXR depends on following SDK component:<br />
<ul><br />
<li>wxWidgets</li><br />
</ul><br />
Prepare this component before OpenEXR.<br />
<br />
<ol><br />
<li>Create the directory <tt><SDKHOME>\OpenEXR</tt></li><br />
<li>Decompress the file <tt>ilmbase-1.0.1.tar.gz</tt> to created directory <tt><SDKHOME>\OpenEXR</tt><br/><br />
<li>Decompress the file <tt>openexr-1.6.1.tar.gz</tt> to the same directory <tt><SDKHOME>\OpenEXR</tt><br/><br />
After decompress there should only exist the two directories <tt>ilmbase-1.0.1</tt> and <tt>openexr-1.6.1</tt> in <tt><SDKHOME>\OpenEXR</tt></li><br />
<li>Apply the <tt>OpenEXR.diff</tt> patch [[Hugin SDK (MSVC 2008) Patches#OpenEXR]]</li><br />
<li>Open solution file <tt><SDKHOME>\OpenEXR\ilmbase-1.0.1\vc\vc8\IlmBase\IlmBase.sln</tt></li><br />
<li>Allow conversion to proceed. TODO is Batch Build better?</li><br />
<li>Select Debug in Solutions Configuration pull-down menu, and then choose Build > Build Solution</li><br />
<li>Select Release in Solutions Configuration pull-down menu, and then choose Build > Build Solution</li><br />
<li> TODO is 64-bit needed? Change General .. Platform Toolset to Win 7.1 SDK for all x64 projects. </li><br />
<li> ? For 64-bit, find the lines "HALF_EXPORT_CONST half::uif half::_toFloat[1 << 16] =" and "HALF_EXPORT_CONST unsigned short half::_eLut[1 << 9] =" in half.cpp and append "{};" to the end of each of them.<br />
<li>Open solution file <tt><SDKHOME>\OpenEXR\openexr-1.6.1\vc\vc8\OpenEXR\OpenEXR.sln</tt></li><br />
<li>TODO update reference for wxWidgets-2.8.11 (from wxWidgets-2.8.10 to wxWidgets-2.8.11)</li><br />
<li>Choose Build > Batch Build</li><br />
<li>Select Build for Project IlmImf with Solution Config <br/><br />
{| class="wikitable" <br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | 32-Bit<br />
! style="padding:5px; text-align:left" | 64-Bit<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | Solution Config: "Debug" with Platform: "Win32"<br/><br />
Solution Config: "Release" with Platform: "Win32"<br />
| style="padding:5px; text-align:left" | Solution Config: "Debug" with Platform: "x64"<br/><br />
Solution Config: "Release" with Platform: "x64"<br />
|}</li><br />
<li>Click Build</li><br />
<li>Close Visual C++ 2010 Express</li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The include files reside in<br />
<tt><SDKHOME>\Deploy\include</tt><br />
<br />
The libraries reside in<br />
<tt><SDKHOME>\Deploy\lib\Debug</tt> and<br />
<tt><SDKHOME>\Deploy\lib\Release</tt> for win32,<br />
<tt><SDKHOME>\Deploy\lib\x64\Debug</tt> and<br />
<tt><SDKHOME>\Deploy\lib\x64\Release</tt> for x64.<br />
<br />
=== Enblend and Enfuse ===<br />
{| class="wikitable" <br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | 32-Bit Directions<br />
! style="padding:5px; text-align:left" | 64-Bit Directions<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <ol><br />
<li>Decompress the file <tt>enblend-enfuse-4.0.zip</tt> to directory <tt><SDKHOME></tt></li><br />
</ol><br />
| style="padding:5px; text-align:left" | Enblend & Enfuse depend on the following SDK components:<br />
<ul><br />
<li>wxWidgets</li><br />
<li>OpenEXR</li><br />
<li>lcms</li><br />
<li>STLport</li><br />
<li>boost</li><br />
<li>libxmi</li><br />
</ul><br />
Prepare these components before Enblend & Enfuse.<br />
<br />
<ol><br />
<li>Decompress the file <tt>enblend-enfuse-4.0.tar.gz</tt> to directory <tt><SDKHOME></tt><br/><br />
After decompression, you should now have a folder <tt><SDKHOME>\enblend-enfuse-4.0</tt></li><br />
<li>Alternate: get enblend from the Hg repository. Needed 7 July 2010 to get CMakeLists.txt</li><br />
<li>Run Cmake, use <tt><SDKHOME>\enblend-enfuse-4.0</tt> as the source, and <tt><SDKHOME>\enblend-build-x64</tt> as the build destination, and MSVC 2010 x64 as the compiler.</li><br />
<li>All the dependencies will be NOT FOUND or find the win32 versions - change to x64 versions.</li><br />
<li>Open the file <tt><SDKHOME>\enblend-build-x64\enblend.sln</tt></li><br />
<li>If one checked ENABLE_GPU in CMake, one must add FREEGLUT_STATIC to the preprocessor definitions of the enblend and enfuse projects.</li><br />
<li>Select Release in Solutions Configuration pull-down menu, choose x64 in the Solutions Platform pull-down menu, and then choose Build > Build Solution</li><br />
<li>Close Visual C++ 2010 Express </li><br />
</ol><br />
|}<br />
'''Result'''<br />
<br />
The applications reside in <tt><SDKHOME>\enblend-enfuse-4.0</tt> for 32-bit, <br/><br />
or <tt><SDKHOME>\enblend-build-x64</tt> for 64-bit.<br />
<br />
=== Expat ===<br />
<br />
<ol><br />
<li>Decompress the file <tt>expat-2.0.1.tar.gz</tt> to directory <tt><SDKHOME></tt></li><br />
<li>Apply the <tt>expat-2.0.1.diff</tt> patch [[Hugin SDK (MSVC 2008) Patches#expat]]</li><br />
<li>Open the file <tt><SDKHOME>\expat-2.0.1\Source\expat.sln</tt></li><br />
<li>Allow conversion to proceed.</li><br />
<li>Right-click expat_static, and choose Properties</li><br />
<li>Under Configuration Properties, General, change Output Dir to <tt>.\..\$(Platform)\bin\$(Configuration)\</tt></li><br />
<li>Change Intermediate Dir to <tt>.\..\$(Platform)\tmp\$(Configuration)_static\</tt></li><br />
<li>Change Target Name to libexpatMT</li><br />
<li>Configuration Properties, Librarian, Output File, change Output File to <tt>inherit from parent or project defaults</tt></li><br />
<li>Configuration Properties, C++, Output Files, change ASM List Location, Object File Name, and Program DB File Name to <tt>inherit from parent or project defaults</tt></li><br />
<br />
<li>Choose Build > Batch Build</li><br />
<li>Select Build for Project expat_static with <br/><br />
{| class="wikitable" <br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | 32-Bit<br />
! style="padding:5px; text-align:left" | 64-Bit<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | Solution Config: "Debug" with Platform: "Win32"<br/><br />
Solution Config: "Release" with Platform: "Win32"<br />
| style="padding:5px; text-align:left" | Solution Config: "Debug" with Platform: "x64"<br/><br />
Solution Config: "Release" with Platform: "x64"<br />
|}</li><br />
<li>Click Build</li><br />
<li>Close Visual C++ 2010 Express</li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The include files reside in<br />
<tt><SDKHOME>\expat-2.0.1\lib</tt><br />
<br />
The libraries reside in<br />
<tt><SDKHOME>\expat-2.0.1\win32\bin\Debug</tt> and<br />
<tt><SDKHOME>\expat-2.0.1\win32\bin\Release</tt> <br/><br />
<tt><SDKHOME>\expat-2.0.1\x64\bin\Debug</tt> and<br />
<tt><SDKHOME>\expat-2.0.1\x64\bin\Release</tt><br />
<br />
=== Exiv2 ===<br />
<br />
Exiv2 depends on following SDK components:<br />
<ul><br />
<li>wxWidgets</li><br />
<li>GetText</li><br />
<li>Expat</li><br />
</ul><br />
Prepare these components before Exiv2.<br />
<br />
<ol><br />
<li>Decompress the file <tt>exiv2-0.20.tar.gz</tt> to directory <tt><SDKHOME></tt></li><br />
<li>Apply the <tt>exiv2-0.20.diff</tt> patch [[Hugin SDK (MSVC 2008) Patches#exiv2]]</li><br />
<li>(64-bit Only)Apply the <tt>exiv2-0.20.x64.diff</tt> patch</li><br />
<li>Open solution file <tt><SDKHOME>\exiv2-0.20\msvc\exiv2.sln</tt></li><br />
<li>In the Solution Explorer, select "exiv2lib"</li><br />
<li>Right-click exiv2lib, and choose Properties, select All Configurations, and All Platforms</li><br />
<li>Under Configuration Properties, General, change Output Dir and Intermediate Dir to <tt>inherit from parent or project defaults</tt></li><br />
<li>Change Target Name to exiv2</li><br />
<li>Configuration Properties, C++, General, change Treat Warnings as Errors to No</li><br />
<li>Configuration Properties, Librarian, Output File, change Output File to <tt>inherit from parent or project defaults</tt></li><br />
<br />
<li>Right-click exiv2lib, and choose Properties, select All Configurations, and All Platforms</li><br />
<li>Under Configuration Properties, General, change Output Dir and Intermediate Dir to <tt>inherit from parent or project defaults</tt></li><br />
<li>TODO update reference for wxWidgets-2.8.11 (from wxWidgets-2.8.10 to wxWidgets-2.8.11)</li><br />
<li>Choose Build > Batch Build</li><br />
<li>Select Build for Project exiv2lib with <br/><br />
{| class="wikitable" <br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | 32-Bit<br />
! style="padding:5px; text-align:left" | 64-Bit<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | Solution Config: "Debug" with Platform: "Win32"<br/><br />
Solution Config: "Release" with Platform: "Win32"<br />
| style="padding:5px; text-align:left" | Solution Config: "Debug" with Platform: "x64"<br/><br />
Solution Config: "Release" with Platform: "x64"<br />
|}</li><br />
<li>Click Build</li><br />
<li>Close Visual C++ 2010 Express</li><br />
<li>Create the directory <tt><SDKHOME>\exiv2-0.20\msvc\lib</tt></li><br />
<li>Copy the following files to this directory and rename them as specified in Destination column.<br />
<br />
{| class="wikitable"<br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | Source<br />
! style="padding:5px; text-align:left" | Destination<br />
|-<br />
| style="padding:5px; text-align:left" | <tt><SDKHOME>\exiv2-0.20\msvc\bin\Debug\exiv2.lib</tt><br />
| style="padding:5px; text-align:left" | <tt><SDKHOME>\exiv2-0.20\msvc\lib\''exiv2d''.lib</tt><br />
|-<br />
| style="padding:5px; text-align:left" | <tt><SDKHOME>\exiv2-0.20\msvc\bin\Release\exiv2.lib</tt><br />
| style="padding:5px; text-align:left" | <tt><SDKHOME>\exiv2-0.20\msvc\lib\exiv2.lib</tt><br />
|-<br />
| style="padding:5px; text-align:left" | <tt><SDKHOME>\expat-2.0.1\win32\bin\Debug\libexpatMT.lib</tt><br />
| style="padding:5px; text-align:left" | <tt><SDKHOME>\exiv2-0.20\msvc\lib\''libexpatd''.lib</tt><br />
|-<br />
| style="padding:5px; text-align:left" | <tt><SDKHOME>\expat-2.0.1\win32\bin\Release\libexpatMT.lib</tt><br />
| style="padding:5px; text-align:left" | <tt><SDKHOME>\exiv2-0.20\msvc\lib\''libexpat''.lib</tt><br />
|}<br />
</li><br />
<li> Similar for msvc\lib\x64\ </li><br />
</ol><br />
<br />
'''Comment'''<br />
<br />
When using exiv2 0.19 (which works better with bigger files), copy and rename also the following files:<br />
<br />
{| class="wikitable"<br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | Source<br />
! style="padding:5px; text-align:left" | Destination<br />
|-<br />
| style="padding:5px; text-align:left" | <tt><SDKHOME>\exiv2-0.19\msvc\xmpsdk\Debug\xmpsdk.lib</tt><br />
| style="padding:5px; text-align:left" | <tt><SDKHOME>\exiv2-0.19\msvc\lib\''xmpsdkd''.lib</tt><br />
|-<br />
| style="padding:5px; text-align:left" | <tt><SDKHOME>\exiv2-0.19\msvc\xmpsdk\Release\xmpsdk.lib</tt><br />
| style="padding:5px; text-align:left" | <tt><SDKHOME>\exiv2-0.19\msvc\lib\xmpsdk.lib</tt><br />
|}<br />
<br />
Similar for msvc\lib\x64\ <br/><br />
<br />
'''Result'''<br />
<br />
The include files reside in<br />
<tt><SDKHOME>\exiv2-0.20\msvc\include</tt><br />
<br />
The libraries reside in<br />
<tt><SDKHOME>\exiv2-0.20\msvc\lib</tt> and <tt>lib\x64</tt><br />
<br />
=== GLEW ===<br />
<br />
<ol><br />
<li>Decompress the file <tt>glew-1.5.1-src.zip</tt> to directory <tt><SDKHOME></tt></li><br />
<li>Apply the <tt>glew.diff</tt> patch [[Hugin SDK (MSVC 2008) Patches#glew]]</li><br />
<li>Open the file <tt><SDKHOME>\glew\build\vc6\glew.sln</tt></li><br />
<li>Let the conversion wizard run.</li><br />
<li>(64-bit) For the glew_static project, right-click Properties, for each x64 configuration, change:<br />
<ol><br />
<li>Configuration Properties, General, Intermediate Dir, change <tt> .\static/debug\ </tt> to <tt> .\static\$(Platform)\debug\ </tt></li><br />
<li>Configuration Properties, Librarian, Output File, change <tt>../../lib/glew32sd.lib</tt> to <tt>../../lib/glew64sd.lib</tt> and change Target Machine to X64</li><br />
<li>Configuration Properties, C++, Output Files, change ASM List Location, Object File Name, and Program DB File Name to <tt>inherit from parent or project defaults</tt></li><br />
</ol><br />
<li>Choose Build > Batch Build</li><br />
<li>Select Build for Project glew_static with Solution Config <br/><br />
{| class="wikitable" <br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | 32-Bit<br />
! style="padding:5px; text-align:left" | 64-Bit<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | Solution Config: "Debug" with Platform: "Win32"<br/><br />
Solution Config: "Release" with Platform: "Win32"<br />
| style="padding:5px; text-align:left" | Solution Config: "Debug" with Platform: "x64"<br/><br />
Solution Config: "Release" with Platform: "x64"<br />
|}</li><br />
<li>Click Build</li><br />
<li>Close Visual C++ 2010 Express </li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The include files reside in<br />
<tt><SDKHOME>\glew\include</tt><br />
<br />
The libraries reside in<br />
<tt><SDKHOME>\glew\lib</tt><br />
<br />
{| class="wikitable" width="100%"<br />
|-<br />
! style="padding:5px; text-align:left" | Note<br />
|-<br />
| style="padding:5px; text-align:left" | The GLEW include files are typically included by a statement like<br/><tt>#include "GL/glew.h"</tt><br/>Therefore the base directory of the GLEW include files is <tt><SDKHOME>\glew\include</tt><br />
|}<br />
<br />
=== Panorama Tools ===<br />
<br />
Panorama Tools depends on following SDK component:<br />
<ul><br />
<li>wxWidgets</li><br />
</ul><br />
Prepare this component before Panoroma Tools.<br />
<br />
<ol><br />
<li>Set one windows environment variables:<br />
<ul><br />
<li>Set variable <tt>WXWIDGETS_HOME</tt> to wxWidgets base folder <tt><SDKHOME>\wxWidgets-2.8.11</tt></li><br />
<li>Alternative: fix the LocalDefs.vsprops file next to the .sln file to point to wxWidgets base folder <tt><SDKHOME>\wxWidgets-2.8.11</tt>. This can be changed inside MSVC: View .. Property Manager, pano13 LocalDefs .. Common Properties .. User Macros </li><br />
</ul><br />
For changed environment variables to take effect you may have to logout and login.<br />
</li><br />
<li>Create the directory <tt><SDKHOME>\libpano\pano13</tt></li><br />
<li>In explorer right-click on created directory <tt><SDKHOME>\libpano\pano13</tt></li>, and then choose SVN Checkout from the shortcut menu. The Checkout dialog appears.</li><br />
<li>In "URL of repository" field enter following address:<br />
<pre><br />
https://panotools.svn.sourceforge.net/svnroot/panotools/trunk/libpano<br />
</pre><br />
</li><br />
<li>Click OK</li><br />
<li>After checkout has finished click OK</li><br />
<li>Open solution file <tt><SDKHOME>\libpano\pano13\libpano.sln</tt>, let the upgrade wizard run.</li><br />
<li>Select all projects, then right-click and choose Properties, select All Configurations, and All Platforms</li><br />
<li>Under Configuration Properties, General, change Platform Toolset from v100 to Windows7.1SDK</li><br />
<li>Under Configuration Properties, General, change Output Dir and Intermediate Dir to <tt>$(Configuration)\$(Platform)\</tt> (Note: already done in 2.9.17)</li><br />
<li>Temporary 2.9.17 fixes: optimize.c, change brackets to quotes, "filter.h" and "adjust.h". Release build, linker, wxWidgets\lib\vc_amd64_lib instead of vc_lib64. Get tools/*.rc from svn. (Sept 7, 2010)</li><br />
<li>Select your platform in the Solution Platform pull-down menu</li><br />
<li>Select "Debug CMD" in Solution Configuration pull-down menu</li><br />
<li>Select project pano13 in Solution Explorer, and then choose Build > Project Only > Build Only pano13</li><br />
<li>Add to pano13: sys_compat_win.c<br />
<li>Select "Release CMD" in Solution Configuration pull-down menu, and then choose Build > Build Solution (Note: multi-core machines, right click and build each project individually, skipping PTAInterpolate. Avoids log-file write conflict.</li><br />
<li>Close Visual C++ 2010 Express </li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The applications reside in<br />
<tt><SDKHOME>\libpano\pano13\tools\Release CMD\Win32</tt> or <tt>x64</tt><br />
<br />
The include files reside in<br />
<tt><SDKHOME>\libpano\pano13</tt><br />
<br />
The libraries reside in<br />
<tt><SDKHOME>\libpano\pano13\Debug CMD\Win32</tt> or <tt>x64</tt> and <br />
<tt><SDKHOME>\libpano\pano13\Release CMD\Win32</tt> or <tt>x64</tt><br />
<br />
{| class="wikitable" width="100%"<br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | Note<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | The applications have to be built in release version only. Therefore only pano13 library has to be built in Debug configuration.<br />
|}<br />
<br />
=== libxml2 ===<br />
<br />
Note: required by autopano-sift-c only, not by enblend or hugin. Untested and unchanged from MSVC 2008 version because autopano-sift-c untested.<br />
<ol><br />
<li>Decompress the file <tt>libxml2-sources-2.7.3.tar.gz</tt> to directory <tt><SDKHOME></tt></li><br />
<li><br />
{| class="wikitable" <br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | 32-Bit Directions<br />
! style="padding:5px; text-align:left" | 64-Bit Directions<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <ol><li>To open a Visual Studio command prompt choose Start > Programs > Microsoft Visual C++ 2008 Express Edition > Visual Studio Tools > Visual Studio 2008 Command Prompt</li></ol><br />
| style="padding: 5px; text-align:left" | <ol><br />
<li>Open a Windows SDK prompt by choosing Start -> Programs -> Microsoft Windows SDK v6.1 -> CMD Shell</li><br />
<li>On the command prompt, enter the following command without any line breaks and press the Return/Enter key:<br/><br />
<pre><br />
setenv /Release /x64 /xp<br />
</pre><br />
It should now refresh and say<br />
<pre><br />
Setting SDK environment relative to <path where you installed the SDK><br />
Targeting Windows XP x64 RELEASE<br />
</pre></li><br />
</ol><br />
|}<br />
</li><br />
<br />
<li>On command prompt change directory to <tt><SDKHOME>\libxml2-2.7.3\win32</tt><br/><br />
'''Example'''<br />
<pre><br />
Setting environment for using Microsoft Visual Studio 2008 x86 tools.<br />
<br />
C:\Program Files\Microsoft Visual Studio 9.0\VC>d:<br />
<br />
D:\>cd \usr\src\SDK\libxml2-2.7.3\win32 <br />
<br />
D:\usr\src\SDK\libxml2-2.7.3\win32><br />
</pre><br />
<br />
<li>Enter each of the following two commands without any line break and press the Return key.<br />
<pre><br />
cscript configure.js ftp=no http=no iconv=no cruntime=/MT<br />
nmake -f makefile.msvc libxmla<br />
</pre><br />
</li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The include files reside in<br />
<tt><SDKHOME>\libxml2-2.7.3\include</tt><br />
<br />
The libraries reside in<br />
<tt><SDKHOME>\libxml2-2.7.3\win32\bin.msvc</tt><br />
<br />
{| class="wikitable" width="100%"<br />
|-<br />
! style="padding:5px; text-align:left" | Notes<br />
|-<br />
| style="padding:5px; text-align:left" | <ul><br />
<li>During build process temporary object files are generated in directory<br />
<tt><SDKHOME>\libxml2-2.7.3\win32\int.a.msvc</tt>.<br />
This directories may be deleted to save disc space.</li><br />
<li>Hugin does not depend on libxml2 library, but autopano-sift-C. Therefore it is included in this SDK.</li><br />
</ul><br />
|}<br />
<br />
=== autopano-sift-C ===<br />
<br />
Note: Untested and unchanged from MSVC 2008 version because of patent restrictions for U.S.-based author ([[User:Helser|Aron Helser]]).<br/><br />
Autopano-SIFT-C depends on following SDK components:<br />
<ul><br />
<li>libxml2</li><br />
<li>Panorama Tool's pano13 library</li><br />
<li>wxWidgets</li><br />
</ul><br />
Prepare these components before Autopano-SIFT-C.<br />
<br />
<ol><br />
<li>Create the directory <tt><SDKHOME>\autopano-sift-C-trunk</tt></li><br />
<li>In explorer right-click on created directory <tt><SDKHOME>\autopano-sift-C-trunk</tt>, and then choose SVN Checkout from the shortcut menu. The Checkout dialog appears.</li><br />
<li>In "URL of repository" field enter following address:<br />
<pre><br />
https://hugin.svn.sourceforge.net/svnroot/hugin/autopano-sift-C/trunk<br />
</pre><br />
</li><br />
<li>Click OK</li><br />
<li>After checkout has finished click OK</li><br />
<li>Start CMake (cmake-gui). The CMake dialog appears.</li><br />
<li>In "Where is the source code" field enter<br />
<pre><br />
<SDKHOME>\autopano-sift-C-trunk<br />
</pre><br />
Alternatively click Browse Source to point to this directory</li><br />
<li>In "Where to build the binaries" field enter<br />
<pre><br />
<SDKHOME>\autopano-sift-C<br />
</pre><br />
</li><br />
<li>Click Configure<br/><br />
If a dialog appears, which asks to create the build directoy, click Yes.<br/><br />
A dialog appears, where you can specify the generator for the project.</li><br />
<li><br />
{| class="wikitable" <br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | 32-Bit Directions<br />
! style="padding:5px; text-align:left" | 64-Bit Directions<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | Select "Visual Studio 9 2008" and select option "Use default native compilers"<br />
| style="padding:5px; text-align:left" | Select "Visual Studio 9 2008 Win64" and select option "Use default native compilers"<br />
|}</li><br />
<li>Click Finish<br/><br />
In the Name and Value list the entries are shown with red background.</li><br />
<li>Click Configure</li><br />
<li>Click Generate</li><br />
<li>Close CMake</li><br />
<li>Open solution file <tt><SDKHOME>\autopano-sift-C\autopano-sift-C.sln</tt></li><br />
<li>Select Release in Solution Configuration pull-down menu, and then choose Build > Build Solution</li><br />
<li>Select project INSTALL in Solution Explorer, and then choose Build > Project Only > Build Only INSTALL</li><br />
<li>Close Visual C++ 2008 Express Edition</li><br />
<li><br />
Copy the directories <tt>bin</tt> and <tt>shared</tt> from <tt><SDKHOME>\autopano-sift-C\INSTALL\FILES</tt> to <tt><SDKHOME>\autopano-sift-C</tt></li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The applications reside in<br />
<tt><SDKHOME>\autopano-sift-C\bin</tt><br />
<br />
The manual pages reside in<br />
<tt><SDKHOME>\autopano-sift-C\shared</tt><br />
<br />
{| class="wikitable" width="100%"<br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | Note<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | To save disk space you may delete all files and directories in <tt><SDKHOME>\autopano-sift-C</tt>, except the subdirectories <tt>bin</tt> and <tt>shared</tt>.<br />
|}<br />
<br />
=== Freeglut ===<br />
<ol><br />
<li>Decompress the file <tt>freeglut-2.6.0.tar.gz</tt> to directory <tt><SDKHOME></tt></li><br />
<li>Open the file <tt><SDKHOME>\freeglut-2.6.0\VisualStudio2008Static\freeglut.sln</tt></li><br />
<li>Select "Debug" in the Solution Configuration pull-down menu. </li><br />
<li>Select project freeglut in Solution Explorer, and then choose Build > Project Only > Build Only freeglut</li><br />
<li>Select "Release" in the Solution Configuration pull-down menu. </li><br />
<li>Select project freeglut in Solution Explorer, and then choose Build > Project Only > Build Only freeglut</li><br />
<li>Close Visual Studio C++ 2010 Express </li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The library resides in <tt><SDKHOME>\freeglut-2.6.0\VisualStudio2008Static\Debug</tt> and <tt><SDKHOME>\freeglut-2.6.0\VisualStudio2008Static\Release</tt><br />
<br />
=== GNU Make ===<br />
<ol><br />
<li>Decompress the file <tt>make-3.81.tar.gz</tt> to directory <tt><SDKHOME></tt></li><br />
<li>Open the file <tt><SDKHOME>\make-3.81\make_msvc_net2003.sln</tt> (Confirm conversion.)</li> <br />
<li>Select "Release" in the Solution Configuration pull-down menu. </li><br />
<li>Select project make_msvc.net2003 Solution Explorer, and then choose Build > Project</li><br />
<li>Close Visual Studio C++ 2010 Express </li><br />
<li>Rename the file <tt><SDKHOME>\make-3.81\Release\make_msvc.net2003.exe</tt> to <tt><SDKHOME>\make-3.81\Release\make.exe</tt><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The executable make.exe resides in <tt><SDKHOME>\make-3.81\Release\</tt><br />
<br />
(All other files in this directory can be deleted to save space.)<br />
<br />
--Created: [[User:Helser|Aron Helser]] 16:20, 29 June 2010 (UTC)<br />
<br />
=== Templatized C++ Command Line Parser Library (tclap) ===<br />
<br />
<ol><br />
<li>Decompress the file <tt>tclap-1.2.0.tar.gz</tt> to directory <tt><SDKHOME>\tclap-1.2.0</tt></li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The include files reside in<br />
<tt><SDKHOME>\tclap-1.2.0\include\tclap</tt><br />
<br />
=== Glib library ===<br />
<br />
Needed by the lensfun library<br />
<br />
<ol><br />
<li> Decompress the file <tt>glib-2.28.8.tar.bz2</tt> to directory <tt><SDKHOME>\glib-2.28.8</tt></li><br />
<li> Open project file in <tt>glib\2.28.8\build\win32\vs10\</tt> </li><br />
<li> Select "Release" in the Solution Configuration pull-down menu. </li><br />
<li> '''64-bit only:''' Select "x64" in the Platform pull-down menu. </li><br />
<li> Do the following modifications: <br />
<ul><br />
<li> Remove the projects glib-compile-schemas, glib-genmarshal, gsettings, gspawn-win32-helper, gspawn-win32-helper-console and testglib. There are not needed. </li><br />
<li> Change type to "static libary (.lib)" for all projects.</li><br />
<li> Change run-time library to "Multi-threaded /MT" for all projects.</li><br />
<li> Project gio: Replace preprocessor _USRDLL directive with GIO_STATIC_COMPILATION</li><br />
<li> Project glib, gmodule, gthread: Replace preprocessor _USRDLL directive with GLIB_STATIC_COMPILATION</li><br />
<li> Project gobject: Replace preprocessor _USRDLL directive with GOBJECT_STATIC_COMPILATION</li><br />
<li> Start building. It will create some config file and will then fail with error messages regarding intl.h </li><br />
<li> Open <tt><SDKHOME>\glib-2.28.8\config.h</tt>, comment out line 29: <tt> // #define ENABLE_NLS 1 </tt> </li><br />
<li> Project gio: Add path to zlib includes in wxWidgets to search path: <SDKHOME>\wxWidgets-x.x.x\src\zlib </li><br />
<li> '''64-bit only:''' Change target machine to "MachineX64 (/MACHINE:X64)" for all projects. </li><br />
<li> Open menu <tt>View, Properties manager</tt> and expand INSTALL project, go to Release|Win32; glib.props; select properties, in User macros change <tt>CopyDir</tt> and <tt>GlibEtcInstallRoot</tt> from <tt>..\..\..\..\..\vs10\$(Platform)</tt> to <tt>..\..\..\</tt><br />
<li> Build target INSTALL </li><br />
</ul><br />
</li><br />
<li> Copy the all lib files from <tt><SDKHOME>\glib-2.28.8\build\Win32\vs10\Release\Win32\bin</tt> (for 64-bit version in <tt><SDKHOME>\glib-2.28.8\build\Win32\vs10\Release\x64\bin</tt>) and <tt><SDKHOME>\glib-2.28.8\lib</tt>.</li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The include files reside in <tt><SDKHOME>\glib-2.28.8\include</tt>, the libraries in <tt><SDKHOME>\glib-2.28.8\lib</tt><br />
<br />
=== Lensfun library ===<br />
<br />
<ol><br />
<li> Pull from subversion: svn://svn.berlios.de/lensfun to <tt><SDKHOME>\lensfun-svn</tt> </li><br />
<ul><br />
<li> In Explorer go to <tt><SDKHOME></tt>, open context menu (right mouse button), select "SVN Checkout", give URL: <tt>svn://svn.berlios.de/lensfun</tt> and path <tt><SDKHOME>\lensfun-svn</tt> </li><br />
</ul><br />
<li> Build library with CMake <br />
<ul><br />
<li> Start CMake-GUI </li><br />
<li> Point "Where is the source code:" to <tt><SDKHOME>\lensfun-svn</tt> </li><br />
<li> Point "Where to build:" to <tt><SDKHOME>\build-lensfun</tt> </li><br />
<li> Click Configure and select "Visual Studio 10" (or "Visual Studio 10 Win64" for 64-bit) </li><br />
<li> Set option <tt>BUILD_STATIC</tt> to on/TRUE </li><br />
<li> Check <tt>GLIB2_BASE_DIR</tt> and set to your GLIB2 directory. </li><br />
<li> Click Configure again, then Generate </li><br />
</ul><br />
</li><br />
<li> Open generated project file lensfun.sln in <tt><SDKHOME>\build-lensfun</tt>, select "Release" in the Solution Configuration pull-down menu and build target INSTALL </li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
All necessary files reside in <tt><SDKHOME>\lensfun</tt><br />
<br />
=== Nullsoft Scriptable Install System (NSIS) ===<br />
Note: Only needed to build Hugin Setup installer<br />
<ol><br />
<li>Run the NSIS installer, <tt>nsis-2.46-setup.exe</tt>, installing to the default location.</li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
NSIS should be installed to <tt><DRIVE>\Program Files\NSIS</tt><br />
<br />
[[Category:Software:Hugin]]<br />
[[Category:Software:Hugin:Compiling]]<br />
[[Category:Software:Platform:Windows]]</div>Morrayhttps://wiki.panotools.org/index.php?title=Hugin_SDK_(MSVC_2010)&diff=15259Hugin SDK (MSVC 2010)2013-03-15T19:16:30Z<p>Morray: /* Panorama Tools */ since jdk is not there anymore its only one</p>
<hr />
<div>Hugin depends on different components like libraries and tools, which are not available on a common Windows system. All these components can be combined to a Hugin Software Development Kit (SDK). This article will eventually give step-by-step instructions to build such SDK for Hugin using Microsoft Visual C++ 2010 (MSVC 2010) Express Edition and precompiled dependencies. <br />
<br />
'''Note: Work in Progress''': The SDK, Hugin and enblend have all been built successfully with MSVC 2010 Express, on Windows 7 x64 Professional, as of July 6, 2010. However, the instructions below are probably not complete, and may be specific to Windows 7. This article has been copied wholesale from [[Hugin SDK (MSVC 2008)]], and has been updated as the steps were successfully completed. <br />
<br />
This article will construct native 32-bit and 64-bit versions. When appropriate, steps that only apply to the 32-bit or 64-bit versions will be noted as (32-bit) or (64-bit), and you can safely ignore them if you are not targeting that particular version. In order to compile a 64-bit version of the Hugin SDK, one does not need a 64-bit computer. However, if they wish to test or debug the binaries, or for some projects (such as OpenEXR) which execute compiled binaries as part of their build step, this will not necessarily be possible on Win32.<br />
<br />
First of all an overview is given over the contents of the SDK and the tools that are necessary to build the SDK.<br />
<br />
The build steps for each component are written like a walk-through and annotated on the end of each section.<br />
<br />
Maybe some of the described tools and packages, especially those fetched from Mercurial (Hg) repository, will change over time and/or become obsolete. Hence it is likely that some steps will become invalid or won't work any more.<br />
<br />
The SDK is structured so that each component resides in its own subdirectory. This approach is different to other platforms like Linux, where some common directories are available to store include files, libraries and applications. The files of a component are spread over all these directories. Both approaches to structure the files in a file system have its assets and drawbacks.<br />
<br />
The base directory of the SDK is denoted as <tt><SDKHOME></tt> in this article. Replace <tt><SDKHOME></tt> by directory name where you store the SDK on your system. In the examples <tt><SDKHOME></tt> is replaced by the directory name <tt>D:\usr\src\SDK</tt>.<br />
<br />
== Prerequisites ==<br />
<br />
To build the SDK some tools are required that are listed in the table below. Download the tools and install them. The destination directory of each tool is arbitrary. If you are uncertain, choose the default given in the setup dialog of each tool.<br />
<br />
{| class="wikitable" width="100%"<br />
|- valign="top"<br />
! style="padding:5px; text-align:left" width="30%" | Tool<br />
! style="padding:5px; text-align:left" | Description<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | Microsoft Visual C++ 2010 Express Edition<br />
| style="padding:5px; text-align:left" | Compiler, Debugger and IDE<br/>Visit [http://www.microsoft.com/express/vc/ Download page] <br>If compiling for 64-bit, you will need to download the SDK, listed next. <br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | (x64 Only) Microsoft Windows SDK for Windows 7 and .NET Framework 4<br />
| style="padding:5px; text-align:left" | x64 Compiler, Libraries, and Headers<br/>Visit [http://go.microsoft.com/fwlink/?LinkID=191420]<br> When installing, make sure to include the Visual C++ compilers for x64 (under Developer Tools) and the Header Files and x64 libraries (under Windows Headers and Libraries). Optionally consider installing all of the SDK, as it makes compiling generally easier.<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | CMake 2.8.1 (2010-04-05)<br />
| style="padding:5px; text-align:left" | Generator of solution and project files for MSVC 2010<br/>Visit [http://www.cmake.org/cmake/resources/software.html#latest Download page] or download [http://www.cmake.org/files/v2.8/cmake-2.8.1-win32-x86.exe <tt>cmake-2.8.1-win32-x86.exe</tt>]<br> Leave default 'Don't add Cmake to system path' <br> Follow the note on the download page to replace CMakeVS10FindMake.cmake <br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | (skip) TortoiseSVN 1.6.1.16129 (2009-02-13)<br />
| style="padding:5px; text-align:left" | (skip) Tool to handle source codes in Subversion repositories<br/>Visit [http://tortoisesvn.net/downloads Download page] or download<br/> [http://downloads.sourceforge.net/tortoisesvn/TortoiseSVN-1.6.1.16129-win32-svn-1.6.1.msi <tt>TortoiseSVN-1.6.1.16129-win32-svn-1.6.1.msi (32-bit)</tt>] or<br/> [http://downloads.sourceforge.net/tortoisesvn/TortoiseSVN-1.6.1.16129-x64-svn-1.6.1.msi <tt>TortoiseSVN-1.6.1.16129-x64-svn-1.6.1.msi (64-bit)</tt>]<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | TortoiseHg 1.0.4 (2010-06-11)<br />
| style="padding:5px; text-align:left" | Tool to handle source codes in Mercurial repositories<br/>Visit [http://tortoisehg.bitbucket.org/ Download page]<br/> Choose x64 if appropriate for you. <br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | 7-Zip 4.65 (2009-02-03)<br />
| style="padding:5px; text-align:left" | Tool to decompress the source packages<br/>Visit [http://www.7-zip.org/download.html Download page] or download [http://downloads.sourceforge.net/sevenzip/7z465.exe <tt>7z465.exe (32-bit)</tt>] or [http://downloads.sourceforge.net/sevenzip/7z465-x64.msi <tt>7z465-x64.msi (64-bit)</tt>]<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | (skip - not required for Enblend 4.0) Java SE Development Kit 6 Update 20<br />
| style="padding:5px; text-align:left" | (skip) Java Development Kit (JDK)<br/>Visit [http://java.sun.com/javase/downloads/index.jsp Download page]<br />
|}<br />
<br />
== Contents of the Hugin SDK ==<br />
<br />
=== Precompiled Version (32-bit only) ===<br />
<br />
This is what we are working towards: For those who want to avoid to build the whole SDK from scratch, the last available precompiled SDK is for MSVC 2008, for an older version of Hugin.<br />
<br />
{| class="wikitable" width="100%"<br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | Precompiled Hugin SDK (Win32)<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | [http://hugin.panotools.org/sdk/MSVC/Hugin-SDK-20090509-win32.exe <tt>Hugin-SDK-20090509-win32.exe </tt>] (76 MiB, 2009-05-09)<br />
|}<br />
<br />
=== Building from Source ===<br />
The contents of the Hugin SDK is shown in the following table. Download the packages, except the packages fetched from Hg/Subversion repository.<br />
<br />
{| class="wikitable" width="100%"<br />
|- valign="top"<br />
! style="padding:5px; text-align:left" width="30%" | Directory<br />
! style="padding:5px; text-align:left" | Description (Website)<br/>Download package (Date of the package)<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>autopano-sift-C</tt><br />
| style="padding:5px; text-align:left" | Autopano-SIFT-C (http://hugin.sourceforge.net/)<br/>Mercurial repository<br/><br />
<tt>http://hugin.hg.sourceforge.net:8000/hgroot/hugin/autopano-sift-C</tt> from [[Hugin_Compiling_Ubuntu]](Note January 2010 / May 2010: Currently the autopano-sift-C SVN trunk, as well as Hg default tip, is unstable, use the 2.5.1 release tarball instead) <br/> 2011: With a working cpfind this is not necessary any more.<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>boost_1_43_0</tt><br />
| style="padding:5px; text-align:left" | Boost C++ libraries 1.43.0<br />
(http://www.boost.org/)<br/>[http://sourceforge.net/projects/boost/files/boost/1.43.0/boost_1_43_0.7z/download<br />
<tt>boost_1_43_0.7z</tt>]<br />
(2010-05-06)<br/>(skip) [http://sourceforge.net/projects/boost/files/boost-jam/3.1.18/boost-jam-3.1.18-1-ntx86.zip/download<br />
<tt>boost-jam-3.1.18-1-ntx86.zip</tt>] (2010-03-22)<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>Deploy</tt><br/><tt>OpenEXR</tt><br />
| style="padding:5px; text-align:left" | OpenEXR library 1.6.1 and IlmBase libraries 1.0.1 (http://www.openexr.com/)<br/>[http://download.savannah.nongnu.org/releases/openexr/ilmbase-1.0.1.tar.gz <tt>ilmbase-1.0.1.tar.gz</tt>] (2007-10-22)<br/>[http://download.savannah.nongnu.org/releases/openexr/openexr-1.6.1.tar.gz <tt>openexr-1.6.1.tar.gz</tt>] (2007-10-22)<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>enblend-enfuse-4.0</tt> <br />
| style="padding:5px; text-align:left" | Enblend 4.0 and Enfuse 4.0 (http://enblend.sourceforge.net/)<br/><br />
{| class="wikitable"<br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | 32-Bit<br />
! style="padding:5px; text-align:left" | 64-Bit<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | [http://downloads.sourceforge.net/enblend/enblend-enfuse-4.0.zip <tt>enblend-enfuse-4.0.zip</tt>] (2010-05-??)<br />
| style="padding:5px; text-align:left" | [http://downloads.sourceforge.net/enblend/enblend-enfuse-4.0.tar.gz <tt>enblend-enfuse-4.0.tar.gz</tt>] (2010-05-??)<br />
|}<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>exiftool</tt><br />
| style="padding:5px; text-align:left" | ExifTool 8.23 (http://www.sno.phy.queensu.ca/~phil/exiftool)<br/>[http://www.sno.phy.queensu.ca/~phil/exiftool/exiftool-8.23.zip <tt>exiftool-8.23.zip</tt>] (2010-06-20)<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>exiv2-0.20.0</tt><br />
| style="padding:5px; text-align:left" | Exiv2 C++ library 0.20 (http://www.exiv2.org/)<br/>[http://www.exiv2.org/exiv2-0.20.tar.gz <tt>exiv2-0.20.tar.gz</tt>] (2010-05-30)<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>expat-2.0.1</tt><br />
| style="padding:5px; text-align:left" | Expat XML Parser library 2.0.1 (http://sourceforge.net/projects/expat/)<br/>[http://downloads.sourceforge.net/expat/expat-2.0.1.tar.gz <tt>expat-2.0.1.tar.gz</tt>] (2007-06-05)<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>gettext</tt><br />
| style="padding:5px; text-align:left" | GNU gettext 0.13.1 and iconv library 1.9.1 (http://www.gnu.org/)<br/><br />
{| class="wikitable"<br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | 32-Bit<br />
! style="padding:5px; text-align:left" | (skip - need binaries only) 64-Bit<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <ul><li>[http://ftp.gnu.org/gnu/gettext/gettext-runtime-0.13.1.bin.woe32.zip <tt>gettext-runtime-0.13.1.bin.woe32.zip</tt>] (2004-01-20)</li><li>[http://ftp.gnu.org/gnu/gettext/gettext-tools-0.13.1.bin.woe32.zip <tt>gettext-tools-0.13.1.bin.woe32.zip</tt>] (2004-01-20)</li><li>[http://ftp.gnu.org/gnu/libiconv/libiconv-1.9.1.bin.woe32.zip <tt>libiconv-1.9.1.bin.woe32.zip</tt>] (2004-01-20)</li></ul><br />
| style="padding:5px; text-align:left" | (skip - use 32bit binaries) <ul><li> [http://ftp.gnu.org/gnu/libiconv/libiconv-1.9.1.tar.gz libiconv-1.9.1.tar.gz] (2003-05-27)</li><li>[http://ftp.gnu.org/gnu/gettext/gettext-0.13.1.tar.gz gettext-0.13.1.tar.gz] (2003-12-17)</li></ul><br />
|}<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>glew</tt><br />
| style="padding:5px; text-align:left" | OpenGL Extension Wrangler Library (GLEW) 1.5.1 (http://glew.sourceforge.net/)<br/>[http://downloads.sourceforge.net/glew/glew-1.5.1-src.zip <tt>glew-1.5.1-src.zip</tt>] (2008-11-03)<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>libpano\pano13</tt><br />
| style="padding:5px; text-align:left" | Panorama Tools and pano13 library (http://panotools.sourceforge.net/)<br/>Mercurial repository<br/><tt>http://panotools.hg.sourceforge.net:8000/hgroot/panotools/libpano</tt><br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>(autopano-sift-c only) libxml2-2.7.3</tt><br />
| style="padding:5px; text-align:left" | XML C parser and toolkit (http://www.xmlsoft.org/)<br/>[ftp://xmlsoft.org/libxml2/libxml2-sources-2.7.3.tar.gz <tt>libxml2-sources-2.7.3.tar.gz</tt>] (2009-01-18)<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>UnxUtils</tt><br />
| style="padding:5px; text-align:left" | (inutile si cygwin est installé) Utilitaires GNU portés sur plateforme Windows 32 bits (http://sourceforge.net/projects/unxutils/)<br/>[http://downloads.sourceforge.net/unxutils/UnxUtils.zip <tt>UnxUtils.zip</tt>] (2007-03-01)<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>wxWidgets-2.8.11</tt><br />
| style="padding:5px; text-align:left" | wxWidgets cross-platform GUI C++ framework 2.8.11 (http://www.wxwidgets.org/)<br/>[http://downloads.sourceforge.net/wxwindows/wxMSW-2.8.11.zip <tt>wxMSW-2.8.11.zip</tt>] (2009-03-17)<br />
<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>freeglut_2.6.0</tt><br />
| style="padding:5px; text-align:left" | Freeglut (http://freeglut.sourceforge.net/index.php)<br/> [http://prdownloads.sourceforge.net/freeglut/freeglut-2.6.0.tar.gz?download <tt>freeglut-2.6.0.tar.gz</tt>]<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>make_3.81</tt><br />
| style="padding:5px; text-align:left" | GNU make 3.81 (http://www.gnu.org/software/make/) <br/>[http://ftp.gnu.org/pub/gnu/make/make-3.81.tar.gz <tt>make-3.81.tar.gz</tt>] <br/> This package replaces UnxUtils inside hugin.<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>Templatized C++ Command Line Parser 1.2.0</tt><br />
| style="padding:5px; text-align:left" | tclap (http://tclap.sourceforge.net/)<br/> [http://sourceforge.net/projects/tclap/files/tclap-1.2.0.tar.gz/download <tt>tclap-1.2.0.tar.gz</tt>]<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>GLib</tt><br />
| style="padding:5px; text-align:left" | glib libary from GTK+ (http://www.gtk.org/)<br/> [http://www.gtk.org/download/win32.php <tt> Download site</tt>] <br/>I don't know, if the precompiled version work with lensfun/Hugin. Use the [http://ftp.gnome.org/pub/gnome/sources/glib/2.28/glib-2.28.8.tar.bz2 source distribution.]<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>Lensfun</tt><br />
| style="padding:5px; text-align:left" | lensfun library for reading/writing to lens database (http://lensfun.berlios.de/)<br/> You will need unreleased version 0.2.5.1 from subversion repository svn://svn.berlios.de/lensfun for full feature set<br />
<br />
|- valign="top"<br />
! colspan="2" | Additional files only necessary for building a 64-bit SDK<br />
|- valign="top"<br />
! style="padding:5px; text-align:left" width="30%" | Directory<br />
! style="padding:5px; text-align:left" | Description (Website)<br/>Download package (Date of the package)<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>(64-bit Enblend only) libxmi-1.2-1</tt> <br />
| style="padding:5px; text-align:left" | GNU libxmi 2-D rasterization library (Win32 port) (http://gnuwin32.sourceforge.net)<br/> [http://downloads.sourceforge.net/gnuwin32/libxmi-1.2-1-src.zip <tt>libxmi-1.2-1-src.zip</tt>] (2004-04-16)<br/><br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>(64-bit Enblend only) STLport-5.2.1</tt> <br />
| style="padding:5px; text-align:left" | STLport Standard Library (http://stlport.sourceforge.net/)<br/> [http://downloads.sourceforge.net/stlport/STLport-5.2.1.tar.gz <tt>STLport-5.2.1.tar.gz</tt>] (2008-12-10)<br/><br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>(64-bit Enblend only) lcms-1.18</tt> <br />
| style="padding:5px; text-align:left" | LittleCms Color management library (http://www.littlecms.com)<br/> [http://sourceforge.net/projects/lcms/files/lcms/1.18/lcms-1.18a.zip/download <tt>lcms-1.18a.zip</tt>] (2009-04-19)<br/><br />
2.0 has been released, but will require code updates to enblend.<br />
<br />
|- valign="top"<br />
! colspan="2" | Additional files only necessary for building Hugin Setup (NSIS Installer)<br />
|- valign="top"<br />
! style="padding:5px; text-align:left" width="30%" | Directory<br />
! style="padding:5px; text-align:left" | Description (Website)<br/>Download package (Date of the package)<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <tt>NSIS</tt> <br />
| style="padding:5px; text-align:left" | Nullsoft Scriptable Install System (http://nsis.sourceforge.net/)<br/> [http://prdownloads.sourceforge.net/nsis/nsis-2.46-setup.exe?download <tt>nsis-2.46-setup.exe</tt>] (2009-12-06)<br/><br />
|}<br />
<br />
In the following subsections each component is discussed in detail. The order of the subsections seems random, but I describe the precompiled packages first, followed by the big packages, where some of the small packages depend on.<br />
<br />
The decompress step of each component contains seemingly inconsistent namings of destination directories. These were chosen mostly to satisfy Cmake. To check the right locations, each result section of every component's description contains a summary of the expected files. <br />
<br />
freeglut and gnu make were added after the 2009 SDK was constructed. <br />
<br />
<br />
==== Diff Files ====<br />
In order to make compilation simple, a series of patch files are included below that contain all the necessary changes, not only to compile the SDK, but to optionally compile an x64 version of the SDK. When directed, you will need to apply the patch file specified. If you are compiling for x64, there may be additional patches you need to apply.<br />
<br />
The download link for the patches is [https://bugs.launchpad.net/hugin/+bug/679695/+attachment/1741338/+files/hugin_patches.zip https://bugs.launchpad.net/hugin/+bug/679695/+attachment/1741338/+files/hugin_patches.zip]<br />
<br />
In order to apply a patch, you will first have needed to follow directions for the [[#UnxUtils|UnxUtils]] step. You cannot apply any patches before that step. <br />
<br />
'''Alternative:''' If you already have the Cygwin environment installed, you can install the 'patch' module and perform the patch commands at a cygwin prompt. Otherwise, UnxUtils is much simpler. However, cygwin patch seems to set the permissions of changed files so they can't be modified by normal users, so after patching do this:<br/><br />
Right-click the folder, Properties, Security tab, Advanced, Change Permissions, check Replace all child object perms...., click OK, OK, OK.<br />
<br />
To apply a patch, follow these directions:<br />
<ol><br />
<li>Start a Command Prompt by choosing Start -> Run and typing in "cmd.exe"</li><br />
<li>On the Command Prompt, change directory to <tt><SDKHOME></tt><br/><br />
'''Example'''<br />
<pre><br />
C:\Program Files\Microsoft\Windows SDK\v7.1>d:<br />
<br />
D:>cd \usr\src\SDK<br />
<br />
D:\usr\src\SDK><br />
</pre></li><br />
<li>On the command prompt, enter the following commands without any line breaks and press the Return/Enter key, substituting <SDKHOME> where appropriate:<br/><br />
<pre><br />
set PATH=%PATH%;<SDKHOME>\UnxUtils\usr\local\wbin<br />
</pre><br />
</li><br />
<li>On the command prompt, enter the following commands without any line breaks and press the Return/Enter key, substituting <PATCHFILE> with the name of the patch file to apply:<br/><br />
<pre><br />
patch -p 0 -i <PATCHFILE><br />
</pre><br />
'''NOTE:''' On Vista and later systems, the filename "patch.exe" is a protected file name which will always result in a UAC prompt if the file does not include a manifest (which UnxUtils version does not). This can be worked around by copying the file <tt><SDKHOME>\UnxUtils\usr\local\wbin\patch.exe</tt> to another file not containing the name, such as <tt><SDKHOME>\UnxUtils\usr\local\wbin\apply_diff.exe</tt>. Then substitute the command <tt>'patch'</tt> in the above command with <tt>'apply_diff'</tt><br />
</li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
If everything worked, you should see a list of filenames that were patched. <br />
'''Example'''<br />
<pre><br />
D:\usr\src\SDK>patch -p 0 -i libiconv-1.9.1.diff<br />
patching file 'libiconv-1.9.1/srclib/error.c'<br />
<br />
D:\usr\src\SDK><br />
</pre><br />
<br />
If there was an error, you may wish to consult the [[Hugin SDK (MSVC 2008) Patches]] page for instructions on what changes were contained in the patch.<br />
<br />
=== UnxUtils ===<br />
<br />
<ol><br />
<li>Create the directory <tt><SDKHOME>\UnxUtils</tt></li><br />
<li>Decompress the file <tt>UnxUtils.zip</tt> to created directory <tt><SDKHOME>\UnxUtils</tt></li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The applications reside in<br />
<tt><SDKHOME>\UnxUtils\bin</tt> and<br />
<tt><SDKHOME>\UnxUtils\usr\local\wbin</tt><br />
<br />
=== ExifTool ===<br />
<br />
<ol><br />
<li>Create the directory <tt><SDKHOME>\exiftool</tt></li><br />
<li>Decompress the file <tt>exiftool-8.23.zip</tt> to <tt><SDKHOME>\exiftool</tt></li><br />
<li>Rename the file <tt>exiftool(-k).exe</tt> to <tt>exiftool.exe</tt></li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The application resides in<br />
<tt><SDKHOME>\exiftool</tt><br />
<br />
=== GetText ===<br />
Binary only, 32-bit binaries work for a 64-bit build.<br />
<ol><br />
<li>Create the directory <tt><SDKHOME>\gettext</tt></li><br />
<li>Decompress the following files to created directory <tt><SDKHOME>\gettext</tt><br />
<ul><br />
<li><tt>gettext-runtime-0.13.1.bin.woe32.zip</tt></li><br />
<li><tt>gettext-tools-0.13.1.bin.woe32.zip</tt></li><br />
<li><tt>libiconv-1.9.1.bin.woe32.zip</tt></li><br />
</ul><br />
</li><br />
</ol><br />
'''Result'''<br />
<br />
The applications reside in<br />
<tt><SDKHOME>\gettext\bin</tt><br />
<br />
The include files reside in<br />
<tt><SDKHOME>\gettext\include</tt><br />
<br />
The libraries (unused) reside in<br />
<tt><SDKHOME>\gettext\lib</tt><br />
=== STLport (64-bit Enblend Only) ===<br />
<ol><br />
<li>Decompress the file <tt>STLport-5.2.1.tar.gz</tt> to directory <tt><SDKHOME></tt></li><br />
<li>Open a Windows SDK prompt by choosing Start -> Programs -> Microsoft Windows SDK v7.1 -> Windows SDK v7.1 Cmd Prompt</li><br />
<li>On the command prompt, enter the following command without any line breaks and press the Return/Enter key:<br/><br />
<pre><br />
setenv /Release /x64 /xp<br />
</pre><br />
It should now refresh and say<br />
<pre><br />
Setting SDK environment relative to <path where you installed the SDK><br />
Targeting Windows XP x64 RELEASE<br />
</pre></li><br />
<li>On the command prompt, change directory to <SDKHOME>\STLport-5.2.1<br/><br />
'''Example'''<br />
<pre><br />
C:\Program Files\Microsoft\Windows SDK\v6.1>d:<br />
<br />
D:>cd \usr\src\SDK\STLport-5.2.1<br />
<br />
D:\usr\src\SDK\STLport-5.2.1><br />
</pre></li><br />
<li>On the command prompt, enter the following commands without any line breaks and press the Return/Enter key:<br/><br />
<pre>configure msvc9 --with-static-rtl<br />
cd build/lib<br />
nmake clean install</pre><br />
</li><br />
<li>Compilation will fail, complaining about <br />
<pre>stlport\stl/_cstdlib.h(158) : error C2084: function '__int64<br />
abs(__int64)' already has a body </pre><br />
This indicates that the compiler didn't like the declaration on line 158 of <SDKHOME>\STLport-5.2.1\stlport\stl\_cstdlib.h - comment that line out, and compile again. It should succeed.</li><br />
<li>Close the Windows SDK command prompt window</li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The includes reside in <tt><SDKHOME>\STLport-5.2.1\stlport</tt><br/><br />
The libraries reside in <tt><SDKHOME>\STLport-5.2.1\lib</tt><br />
<br />
=== lcms-1.18 (64-bit Enblend Only) ===<br />
<ol><br />
<li>Decompress the file <tt>lcms-1.18a.tar.gz</tt> to directory <tt><SDKHOME></tt></li><br />
<li>Apply the <tt>lcms-1.18.diff</tt> patch</li><br />
<li>Open the file <tt><SDKHOME>\lcms-1.18\Projects\VC2008\lcms.sln</tt>. Allow conversion.</li><br />
<li>Select project lcms, right-click Properties</li><br />
<li>Select "Release" in the Solution Configuration pull-down menu. Select "x64" in the Solution Platform pull-down menu</li><br />
<li>Select project lcms in Solution Explorer, and then choose Build > Project Only > Build Only lcms</li><br />
<li> changes to output file and intermediate directory for x64 </li><br />
<li>Close Visual Studio C++ 2010 Express </li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The library resides in <tt><SDKHOME>\lcms-1.18\Lib\MS-x64</tt><br />
<br />
{| class="wikitable" width="100%"<br />
|-<br />
! style="padding:5px; text-align:left" | Note<br />
|-<br />
| style="padding:5px; text-align:left" | During build process temporary object files are stored in following directories<br />
<ul><br />
<li><tt><SDKHOME>\lcms-1.18\Projects\VC2008\LibDebug</tt></li><br />
<li><tt><SDKHOME>\lcms-1.18\Projects\VC2008\LibRelease</tt></li><br />
</ul><br />
Both directories may be deleted to save disk space.<br />
|}<br />
<br />
=== libxmi-1.2.1 (64-bit Enblend Only) ===<br />
<ol><br />
<li>Open the file <tt>libxmi-1.2-1.src.zip</tt> in 7-Zip</li><br />
<li>Open the "src" folder by double-clicking</li><br />
<li>Open the "libxmi" folder by double-clicking</li><br />
<li>Open the "1.2" folder by double-clicking</li><br />
<li>Extract "libxmi-1.2" to the directory <tt><SDKHOME></tt></li><br />
<li>Apply the <tt>libxmi-1.2.diff</tt> patch</li><br />
<li>Open <tt>libxmi.vcproj</tt>. Allow conversion.</li><br />
<li>Set default Output/Intermediate options for x64</li><br />
<li>Build libxmi, x64 Debug and Release</li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The libxmi-1.2 sources now reside in <tt><SDKHOME>\libxmi-1.2</tt><br />
The libxmi-1.2 libs now reside in <tt><SDKHOME>\libxmi-1.2\x64\Debug</tt> or <tt>Release</tt><br />
<br />
=== wxWidgets ===<br />
<ol><br />
<li>Decompress the file <tt>wxMSW-2.8.11.zip</tt> to directory <tt><SDKHOME></tt></li><br />
<li>Rename the directory <tt><SDKHOME>\wxMSW-2.8.11</tt> to <tt><SDKHOME>\wxWidgets-2.8.11</tt></li><br />
<li>Apply the <tt>wxWidgets-2.8.11.diff</tt> patch [[Hugin SDK (MSVC 2008) Patches#wxWidgets]]</li><br />
<li><br />
{| class="wikitable" width="100%"<br />
|- valign="top"<br />
! style="padding:5px; text-align:left" width="50%" | 32-Bit Directions<br />
! style="padding:5px; text-align:left" | 64-Bit Directions<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | To open a Visual Studio command prompt choose Start > Programs > Microsoft Visual Studio 2010 Express Edition > Visual Studio Command Prompt (2010)<br />
| style="padding:5px; text-align:left" | <ol><br />
<li>Open a Windows SDK prompt by choosing Start -> Programs -> Microsoft Windows SDK v1.1 -> Windows SDK 7.1 Command Prompt</li><br />
<li>On the command prompt, enter the following command without any line breaks and press the Return/Enter key:<br/><br />
<pre><br />
setenv /Release /x64 /xp<br />
</pre><br />
It should now refresh and say<br />
<pre><br />
Setting SDK environment relative to <path where you installed the SDK><br />
Targeting Windows XP x64 Release<br />
</pre></li><br />
</ol><br />
|}</li><br />
<br />
<li>On command prompt change directory to <tt><SDKHOME>\wxWidgets-2.8.11\build\msw</tt><br/><br />
'''Example'''<br />
<pre><br />
C:\Program Files\Microsoft Visual Studio 10.0\VC>d:<br />
<br />
D:\>cd \usr\src\SDK\wxWidgets-2.8.11\build\msw<br />
<br />
D:\usr\src\SDK\wxWidgets-2.8.11\build\msw><br />
</pre><br />
</li><br />
<li>Enter each of the following two commands without any line break and press the Return key<br/><br />
<br />
32-Bit Directions<br />
<pre><br />
nmake -f makefile.vc BUILD=debug UNICODE=1 SHARED=0 USE_OPENGL=1 RUNTIME_LIBS=static<br />
nmake -f makefile.vc BUILD=release UNICODE=1 SHARED=0 USE_OPENGL=1 RUNTIME_LIBS=static<br />
</pre><br />
<br />
64-Bit Directions<br />
<pre><br />
nmake -f makefile.vc BUILD=debug TARGET_CPU=AMD64 UNICODE=1 SHARED=0 USE_OPENGL=1 RUNTIME_LIBS=static<br />
nmake -f makefile.vc BUILD=release TARGET_CPU=AMD64 UNICODE=1 SHARED=0 USE_OPENGL=1 RUNTIME_LIBS=static<br />
</pre><br />
</li><br />
<li>Close the Windows SDK command prompt window</li><br />
<br />
</ol><br />
<br />
'''Result'''<br />
<br />
The include files reside in<br />
<tt><SDKHOME>\wxWidgets-2.8.11\include</tt> and its subdirectories<br />
<br />
Hugin also depends on following files<br />
<ul><br />
<li><tt><SDKHOME>\wxWidgets-2.8.11\src\jpg\*.h</tt></li><br />
<li><tt><SDKHOME>\wxWidgets-2.8.11\src\jpg\jconfig.vc</tt></li><br />
<li><tt><SDKHOME>\wxWidgets-2.8.11\src\png\*.h</tt></li><br />
<li><tt><SDKHOME>\wxWidgets-2.8.11\src\tiff\*.h</tt></li><br />
<li><tt><SDKHOME>\wxWidgets-2.8.11\src\zlib\*.h</tt></li><br />
</ul><br />
<br />
The libraries reside in<br />
<tt><SDKHOME>\wxWidgets-2.8.11\lib\vc_lib</tt> and/or<br />
<tt><SDKHOME>wxWidgets-2.8.11\lib\vc_amd64_lib</tt><br />
<br />
{| class="wikitable"<br />
|-<br />
! style="padding:5px; text-align:left" | Note<br />
|-<br />
| style="padding:5px; text-align:left" | During build process temporary object files are stored in following directories<br />
{| class="wikitable" width="100%"<br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | 32-Bit <br />
! style="padding:5px; text-align:left" | 64-Bit<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <ul><br />
<li><tt><SDKHOME>\wxWidgets-2.8.11\build\msw\vc_mswu</tt></li><br />
<li><tt><SDKHOME>\wxWidgets-2.8.11\build\msw\vc_mswud</tt></li><br />
</ul><br />
| style="padding:5px; text-align:left" | <br />
<ul><br />
<li><tt><SDKHOME>\wxWidgets-2.8.11\build\msw\vc_mswu_amd64</tt></li><br />
<li><tt><SDKHOME>\wxWidgets-2.8.11\build\msw\vc_mswud_amd64</tt></li><br />
</ul><br />
|}<br />
Both directories may be deleted to save disk space.<br />
|}<br />
<br />
=== Boost ===<br />
<br />
<ol><br />
<li>Decompress the file <tt>boost_1_43_0.7z</tt> to directory <tt><SDKHOME></tt></li><br />
<li>(skip) Decompress the file <tt>boost-jam-3.1.17-1-ntx86.zip</tt> to an arbitrary directory and copy the application <tt>bjam.exe</tt> to <tt><SDKHOME>\boost_1_39_0</tt></li><br />
<li>Open a Visual Studio command prompt, like you did with wxWidgets</li><br />
<li>On command prompt change directory to <tt><SDKHOME>\boost_1_43_0</tt><br/><br />
'''Example'''<br />
<pre><br />
C:\Dokuments and Settings\Guido>d:<br />
<br />
D:\>cd \usr\src\SDK\boost_1_43_0<br />
<br />
D:\usr\src\SDK\boost_1_43_0><br />
</pre><br />
</li><br />
<li>Enter the command 'bootstrap' to build bjam.exe</li><br />
<li>Enter the following command without line breaks and press Return key<br/><br />
{| class="wikitable" <br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | 32-Bit Directions<br />
! style="padding:5px; text-align:left" | 64-Bit Directions<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <pre><br />
bjam --with-date_time --with-thread --with-system --with-signals --with-regex --with-iostreams --with-filesystem --with-serialization toolset=msvc variant=debug variant=release link=static threading=multi runtime-link=static stage<br />
</pre><br />
After <tt>bjam.exe</tt> finishes a statement like the following should be printed in the command prompt window<br />
<pre><br />
...updated 56 targets...<br />
<br />
d:\usr\src\SDK\boost_1_43_0><br />
</pre><br />
| style="padding:5px; text-align:left" | <pre><br />
bjam --with-date_time --with-thread --with-system --with-signals --with-regex --with-iostreams --with-filesystem --with-serialization toolset=msvc variant=debug variant=release link=static threading=multi runtime-link=static address-model=64 stage<br />
</pre><br />
After <tt>bjam.exe</tt> finishes a statement like the following should be printed in the command prompt window<br />
<pre><br />
...updated 44 targets...<br />
</pre><br />
|}</li><br />
<li>To build both 32-bit and 64-bit directions, rename boost_1_43_0\stage\lib directory to lib_win32 after building 32-bit, and to lib_x64 after building the 64-bit targets</li><br />
<li>Close the Windows command prompt window</li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The include files reside in<br />
<tt><SDKHOME>\boost_1_43_0</tt> and its subdirectory <tt>boost</tt><br />
<br />
The libraries reside in<br />
<tt><SDKHOME>\boost_1_43_0\stage\lib</tt> (or lib_win32 and lib_x64)<br />
<br />
{| class="wikitable" width="100%"<br />
|-<br />
! style="padding:5px; text-align:left" | Notes<br />
|-<br />
|<ul><br />
<li>During build process temporary files are generated in <tt><SDKHOME>\boost_1_43_0\bin.v2</tt>. This directory may be deleted to save disk space.<br />
</li><br />
<li>Hugin needs only a subset of the Boost libraries, thus only these required libraries have to be built.<br/><br />
If you want to build all Boost libraries enter following command on the Windows command prompt instead of the command described above and press Return key.<br />
<pre><br />
bjam -–build-type=complete toolset=msvc stage<br />
</pre><br />
There are about 7GB disc space needed during build of all libraries (3.5GB for libraries and the same amount for the temporary files).<br />
</li><br />
<li>The Boost include files are typically included by a statement like<br/><br />
<tt>#include "boost/whatever.hpp"</tt><br/><br />
Therefore the base directory of the Boost include files is <tt><SDKHOME>\boost_1_43_0</tt><br />
</li><br />
<li>Only the following libraries are needed to build a release version of Hugin:<br />
<ul><br />
<li><tt>libboost_date_time-vc100-mt-s.lib</tt></li><br />
<li><tt>libboost_thread-vc100-mt-s.lib</tt></li><br />
</ul><br />
The files with "<tt>gd</tt>" in the filename, e.g. <tt>libboost_thread-vc100-mt-sgd-1_43.lib</tt>, are the debug libraries.<br />
The library files without "<tt>-1_43</tt>" suffix are automatically generated copies of the libraries with version suffix. They are used by CMake to detect the library directory.<br />
</li><br />
</ul><br />
|}<br />
<br />
=== OpenEXR ===<br />
<br />
OpenEXR depends on following SDK component:<br />
<ul><br />
<li>wxWidgets</li><br />
</ul><br />
Prepare this component before OpenEXR.<br />
<br />
<ol><br />
<li>Create the directory <tt><SDKHOME>\OpenEXR</tt></li><br />
<li>Decompress the file <tt>ilmbase-1.0.1.tar.gz</tt> to created directory <tt><SDKHOME>\OpenEXR</tt><br/><br />
<li>Decompress the file <tt>openexr-1.6.1.tar.gz</tt> to the same directory <tt><SDKHOME>\OpenEXR</tt><br/><br />
After decompress there should only exist the two directories <tt>ilmbase-1.0.1</tt> and <tt>openexr-1.6.1</tt> in <tt><SDKHOME>\OpenEXR</tt></li><br />
<li>Apply the <tt>OpenEXR.diff</tt> patch [[Hugin SDK (MSVC 2008) Patches#OpenEXR]]</li><br />
<li>Open solution file <tt><SDKHOME>\OpenEXR\ilmbase-1.0.1\vc\vc8\IlmBase\IlmBase.sln</tt></li><br />
<li>Allow conversion to proceed. TODO is Batch Build better?</li><br />
<li>Select Debug in Solutions Configuration pull-down menu, and then choose Build > Build Solution</li><br />
<li>Select Release in Solutions Configuration pull-down menu, and then choose Build > Build Solution</li><br />
<li> TODO is 64-bit needed? Change General .. Platform Toolset to Win 7.1 SDK for all x64 projects. </li><br />
<li> ? For 64-bit, find the lines "HALF_EXPORT_CONST half::uif half::_toFloat[1 << 16] =" and "HALF_EXPORT_CONST unsigned short half::_eLut[1 << 9] =" in half.cpp and append "{};" to the end of each of them.<br />
<li>Open solution file <tt><SDKHOME>\OpenEXR\openexr-1.6.1\vc\vc8\OpenEXR\OpenEXR.sln</tt></li><br />
<li>TODO update reference for wxWidgets-2.8.11 (from wxWidgets-2.8.10 to wxWidgets-2.8.11)</li><br />
<li>Choose Build > Batch Build</li><br />
<li>Select Build for Project IlmImf with Solution Config <br/><br />
{| class="wikitable" <br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | 32-Bit<br />
! style="padding:5px; text-align:left" | 64-Bit<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | Solution Config: "Debug" with Platform: "Win32"<br/><br />
Solution Config: "Release" with Platform: "Win32"<br />
| style="padding:5px; text-align:left" | Solution Config: "Debug" with Platform: "x64"<br/><br />
Solution Config: "Release" with Platform: "x64"<br />
|}</li><br />
<li>Click Build</li><br />
<li>Close Visual C++ 2010 Express</li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The include files reside in<br />
<tt><SDKHOME>\Deploy\include</tt><br />
<br />
The libraries reside in<br />
<tt><SDKHOME>\Deploy\lib\Debug</tt> and<br />
<tt><SDKHOME>\Deploy\lib\Release</tt> for win32,<br />
<tt><SDKHOME>\Deploy\lib\x64\Debug</tt> and<br />
<tt><SDKHOME>\Deploy\lib\x64\Release</tt> for x64.<br />
<br />
=== Enblend and Enfuse ===<br />
{| class="wikitable" <br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | 32-Bit Directions<br />
! style="padding:5px; text-align:left" | 64-Bit Directions<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <ol><br />
<li>Decompress the file <tt>enblend-enfuse-4.0.zip</tt> to directory <tt><SDKHOME></tt></li><br />
</ol><br />
| style="padding:5px; text-align:left" | Enblend & Enfuse depend on the following SDK components:<br />
<ul><br />
<li>wxWidgets</li><br />
<li>OpenEXR</li><br />
<li>lcms</li><br />
<li>STLport</li><br />
<li>boost</li><br />
<li>libxmi</li><br />
</ul><br />
Prepare these components before Enblend & Enfuse.<br />
<br />
<ol><br />
<li>Decompress the file <tt>enblend-enfuse-4.0.tar.gz</tt> to directory <tt><SDKHOME></tt><br/><br />
After decompression, you should now have a folder <tt><SDKHOME>\enblend-enfuse-4.0</tt></li><br />
<li>Alternate: get enblend from the Hg repository. Needed 7 July 2010 to get CMakeLists.txt</li><br />
<li>Run Cmake, use <tt><SDKHOME>\enblend-enfuse-4.0</tt> as the source, and <tt><SDKHOME>\enblend-build-x64</tt> as the build destination, and MSVC 2010 x64 as the compiler.</li><br />
<li>All the dependencies will be NOT FOUND or find the win32 versions - change to x64 versions.</li><br />
<li>Open the file <tt><SDKHOME>\enblend-build-x64\enblend.sln</tt></li><br />
<li>If one checked ENABLE_GPU in CMake, one must add FREEGLUT_STATIC to the preprocessor definitions of the enblend and enfuse projects.</li><br />
<li>Select Release in Solutions Configuration pull-down menu, choose x64 in the Solutions Platform pull-down menu, and then choose Build > Build Solution</li><br />
<li>Close Visual C++ 2010 Express </li><br />
</ol><br />
|}<br />
'''Result'''<br />
<br />
The applications reside in <tt><SDKHOME>\enblend-enfuse-4.0</tt> for 32-bit, <br/><br />
or <tt><SDKHOME>\enblend-build-x64</tt> for 64-bit.<br />
<br />
=== Expat ===<br />
<br />
<ol><br />
<li>Decompress the file <tt>expat-2.0.1.tar.gz</tt> to directory <tt><SDKHOME></tt></li><br />
<li>Apply the <tt>expat-2.0.1.diff</tt> patch [[Hugin SDK (MSVC 2008) Patches#expat]]</li><br />
<li>Open the file <tt><SDKHOME>\expat-2.0.1\Source\expat.sln</tt></li><br />
<li>Allow conversion to proceed.</li><br />
<li>Right-click expat_static, and choose Properties</li><br />
<li>Under Configuration Properties, General, change Output Dir to <tt>.\..\$(Platform)\bin\$(Configuration)\</tt></li><br />
<li>Change Intermediate Dir to <tt>.\..\$(Platform)\tmp\$(Configuration)_static\</tt></li><br />
<li>Change Target Name to libexpatMT</li><br />
<li>Configuration Properties, Librarian, Output File, change Output File to <tt>inherit from parent or project defaults</tt></li><br />
<li>Configuration Properties, C++, Output Files, change ASM List Location, Object File Name, and Program DB File Name to <tt>inherit from parent or project defaults</tt></li><br />
<br />
<li>Choose Build > Batch Build</li><br />
<li>Select Build for Project expat_static with <br/><br />
{| class="wikitable" <br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | 32-Bit<br />
! style="padding:5px; text-align:left" | 64-Bit<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | Solution Config: "Debug" with Platform: "Win32"<br/><br />
Solution Config: "Release" with Platform: "Win32"<br />
| style="padding:5px; text-align:left" | Solution Config: "Debug" with Platform: "x64"<br/><br />
Solution Config: "Release" with Platform: "x64"<br />
|}</li><br />
<li>Click Build</li><br />
<li>Close Visual C++ 2010 Express</li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The include files reside in<br />
<tt><SDKHOME>\expat-2.0.1\lib</tt><br />
<br />
The libraries reside in<br />
<tt><SDKHOME>\expat-2.0.1\win32\bin\Debug</tt> and<br />
<tt><SDKHOME>\expat-2.0.1\win32\bin\Release</tt> <br/><br />
<tt><SDKHOME>\expat-2.0.1\x64\bin\Debug</tt> and<br />
<tt><SDKHOME>\expat-2.0.1\x64\bin\Release</tt><br />
<br />
=== Exiv2 ===<br />
<br />
Exiv2 depends on following SDK components:<br />
<ul><br />
<li>wxWidgets</li><br />
<li>GetText</li><br />
<li>Expat</li><br />
</ul><br />
Prepare these components before Exiv2.<br />
<br />
<ol><br />
<li>Decompress the file <tt>exiv2-0.20.tar.gz</tt> to directory <tt><SDKHOME></tt></li><br />
<li>Apply the <tt>exiv2-0.20.diff</tt> patch [[Hugin SDK (MSVC 2008) Patches#exiv2]]</li><br />
<li>(64-bit Only)Apply the <tt>exiv2-0.20.x64.diff</tt> patch</li><br />
<li>Open solution file <tt><SDKHOME>\exiv2-0.20\msvc\exiv2.sln</tt></li><br />
<li>In the Solution Explorer, select "exiv2lib"</li><br />
<li>Right-click exiv2lib, and choose Properties, select All Configurations, and All Platforms</li><br />
<li>Under Configuration Properties, General, change Output Dir and Intermediate Dir to <tt>inherit from parent or project defaults</tt></li><br />
<li>Change Target Name to exiv2</li><br />
<li>Configuration Properties, C++, General, change Treat Warnings as Errors to No</li><br />
<li>Configuration Properties, Librarian, Output File, change Output File to <tt>inherit from parent or project defaults</tt></li><br />
<br />
<li>Right-click exiv2lib, and choose Properties, select All Configurations, and All Platforms</li><br />
<li>Under Configuration Properties, General, change Output Dir and Intermediate Dir to <tt>inherit from parent or project defaults</tt></li><br />
<li>TODO update reference for wxWidgets-2.8.11 (from wxWidgets-2.8.10 to wxWidgets-2.8.11)</li><br />
<li>Choose Build > Batch Build</li><br />
<li>Select Build for Project exiv2lib with <br/><br />
{| class="wikitable" <br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | 32-Bit<br />
! style="padding:5px; text-align:left" | 64-Bit<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | Solution Config: "Debug" with Platform: "Win32"<br/><br />
Solution Config: "Release" with Platform: "Win32"<br />
| style="padding:5px; text-align:left" | Solution Config: "Debug" with Platform: "x64"<br/><br />
Solution Config: "Release" with Platform: "x64"<br />
|}</li><br />
<li>Click Build</li><br />
<li>Close Visual C++ 2010 Express</li><br />
<li>Create the directory <tt><SDKHOME>\exiv2-0.20\msvc\lib</tt></li><br />
<li>Copy the following files to this directory and rename them as specified in Destination column.<br />
<br />
{| class="wikitable"<br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | Source<br />
! style="padding:5px; text-align:left" | Destination<br />
|-<br />
| style="padding:5px; text-align:left" | <tt><SDKHOME>\exiv2-0.20\msvc\bin\Debug\exiv2.lib</tt><br />
| style="padding:5px; text-align:left" | <tt><SDKHOME>\exiv2-0.20\msvc\lib\''exiv2d''.lib</tt><br />
|-<br />
| style="padding:5px; text-align:left" | <tt><SDKHOME>\exiv2-0.20\msvc\bin\Release\exiv2.lib</tt><br />
| style="padding:5px; text-align:left" | <tt><SDKHOME>\exiv2-0.20\msvc\lib\exiv2.lib</tt><br />
|-<br />
| style="padding:5px; text-align:left" | <tt><SDKHOME>\expat-2.0.1\win32\bin\Debug\libexpatMT.lib</tt><br />
| style="padding:5px; text-align:left" | <tt><SDKHOME>\exiv2-0.20\msvc\lib\''libexpatd''.lib</tt><br />
|-<br />
| style="padding:5px; text-align:left" | <tt><SDKHOME>\expat-2.0.1\win32\bin\Release\libexpatMT.lib</tt><br />
| style="padding:5px; text-align:left" | <tt><SDKHOME>\exiv2-0.20\msvc\lib\''libexpat''.lib</tt><br />
|}<br />
</li><br />
<li> Similar for msvc\lib\x64\ </li><br />
</ol><br />
<br />
'''Comment'''<br />
<br />
When using exiv2 0.19 (which works better with bigger files), copy and rename also the following files:<br />
<br />
{| class="wikitable"<br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | Source<br />
! style="padding:5px; text-align:left" | Destination<br />
|-<br />
| style="padding:5px; text-align:left" | <tt><SDKHOME>\exiv2-0.19\msvc\xmpsdk\Debug\xmpsdk.lib</tt><br />
| style="padding:5px; text-align:left" | <tt><SDKHOME>\exiv2-0.19\msvc\lib\''xmpsdkd''.lib</tt><br />
|-<br />
| style="padding:5px; text-align:left" | <tt><SDKHOME>\exiv2-0.19\msvc\xmpsdk\Release\xmpsdk.lib</tt><br />
| style="padding:5px; text-align:left" | <tt><SDKHOME>\exiv2-0.19\msvc\lib\xmpsdk.lib</tt><br />
|}<br />
<br />
Similar for msvc\lib\x64\ <br/><br />
<br />
'''Result'''<br />
<br />
The include files reside in<br />
<tt><SDKHOME>\exiv2-0.20\msvc\include</tt><br />
<br />
The libraries reside in<br />
<tt><SDKHOME>\exiv2-0.20\msvc\lib</tt> and <tt>lib\x64</tt><br />
<br />
=== GLEW ===<br />
<br />
<ol><br />
<li>Decompress the file <tt>glew-1.5.1-src.zip</tt> to directory <tt><SDKHOME></tt></li><br />
<li>Apply the <tt>glew.diff</tt> patch [[Hugin SDK (MSVC 2008) Patches#glew]]</li><br />
<li>Open the file <tt><SDKHOME>\glew\build\vc6\glew.sln</tt></li><br />
<li>Let the conversion wizard run.</li><br />
<li>(64-bit) For the glew_static project, right-click Properties, for each x64 configuration, change:<br />
<ol><br />
<li>Configuration Properties, General, Intermediate Dir, change <tt> .\static/debug\ </tt> to <tt> .\static\$(Platform)\debug\ </tt></li><br />
<li>Configuration Properties, Librarian, Output File, change <tt>../../lib/glew32sd.lib</tt> to <tt>../../lib/glew64sd.lib</tt> and change Target Machine to X64</li><br />
<li>Configuration Properties, C++, Output Files, change ASM List Location, Object File Name, and Program DB File Name to <tt>inherit from parent or project defaults</tt></li><br />
</ol><br />
<li>Choose Build > Batch Build</li><br />
<li>Select Build for Project glew_static with Solution Config <br/><br />
{| class="wikitable" <br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | 32-Bit<br />
! style="padding:5px; text-align:left" | 64-Bit<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | Solution Config: "Debug" with Platform: "Win32"<br/><br />
Solution Config: "Release" with Platform: "Win32"<br />
| style="padding:5px; text-align:left" | Solution Config: "Debug" with Platform: "x64"<br/><br />
Solution Config: "Release" with Platform: "x64"<br />
|}</li><br />
<li>Click Build</li><br />
<li>Close Visual C++ 2010 Express </li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The include files reside in<br />
<tt><SDKHOME>\glew\include</tt><br />
<br />
The libraries reside in<br />
<tt><SDKHOME>\glew\lib</tt><br />
<br />
{| class="wikitable" width="100%"<br />
|-<br />
! style="padding:5px; text-align:left" | Note<br />
|-<br />
| style="padding:5px; text-align:left" | The GLEW include files are typically included by a statement like<br/><tt>#include "GL/glew.h"</tt><br/>Therefore the base directory of the GLEW include files is <tt><SDKHOME>\glew\include</tt><br />
|}<br />
<br />
=== Panorama Tools ===<br />
<br />
Panorama Tools depends on following SDK component:<br />
<ul><br />
<li>wxWidgets</li><br />
</ul><br />
Prepare this component before Panoroma Tools.<br />
<br />
<ol><br />
<li>Set one windows environment variables:<br />
<ul><br />
<li>Set variable <tt>WXWIDGETS_HOME</tt> to wxWidgets base folder <tt><SDKHOME>\wxWidgets-2.8.11</tt></li><br />
<li>Alternative: fix the LocalDefs.vsprops file next to the .sln file to point to wxWidgets base folder <tt><SDKHOME>\wxWidgets-2.8.11</tt>. This can be changed inside MSVC: View .. Property Manager, pano13 LocalDefs .. Common Properties .. User Macros </li><br />
</ul><br />
For changed environment variables to take effect you may have to logout and login.<br />
</li><br />
<li>Create the directory <tt><SDKHOME>\libpano\pano13</tt></li><br />
<li>In explorer right-click on created directory <tt><SDKHOME>\libpano\pano13</tt></li>, and then choose SVN Checkout from the shortcut menu. The Checkout dialog appears.</li><br />
<li>In "URL of repository" field enter following address:<br />
<pre><br />
https://panotools.svn.sourceforge.net/svnroot/panotools/trunk/libpano<br />
</pre><br />
</li><br />
<li>Click OK</li><br />
<li>After checkout has finished click OK</li><br />
<li>Open solution file <tt><SDKHOME>\libpano\pano13\libpano.sln</tt>, let the upgrade wizard run.</li><br />
<li>Select all projects, then right-click and choose Properties, select All Configurations, and All Platforms</li><br />
<li>Under Configuration Properties, General, change Platform Toolset from v100 to Windows7.1SDK</li><br />
<li>Under Configuration Properties, General, change Output Dir and Intermediate Dir to <tt>$(Configuration)\$(Platform)\</tt> (Note: already done in 2.9.17)</li><br />
<li>Temporary 2.9.17 fixes: optimize.c, change brackets to quotes, "filter.h" and "adjust.h". Release build, linker, wxWidgets\lib\vc_amd64_lib instead of vc_lib64. Get tools/*.rc from svn. (Sept 7, 2010)</li><br />
<li>Select your platform in the Solution Platform pull-down menu</li><br />
<li>Select "Debug CMD" in Solution Configuration pull-down menu</li><br />
<li>Select project pano13 in Solution Explorer, and then choose Build > Project Only > Build Only pano13</li><br />
<li>Select "Release CMD" in Solution Configuration pull-down menu, and then choose Build > Build Solution (Note: multi-core machines, right click and build each project individually, skipping PTAInterpolate. Avoids log-file write conflict.</li><br />
<li>Close Visual C++ 2010 Express </li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The applications reside in<br />
<tt><SDKHOME>\libpano\pano13\tools\Release CMD\Win32</tt> or <tt>x64</tt><br />
<br />
The include files reside in<br />
<tt><SDKHOME>\libpano\pano13</tt><br />
<br />
The libraries reside in<br />
<tt><SDKHOME>\libpano\pano13\Debug CMD\Win32</tt> or <tt>x64</tt> and <br />
<tt><SDKHOME>\libpano\pano13\Release CMD\Win32</tt> or <tt>x64</tt><br />
<br />
{| class="wikitable" width="100%"<br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | Note<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | The applications have to be built in release version only. Therefore only pano13 library has to be built in Debug configuration.<br />
|}<br />
<br />
=== libxml2 ===<br />
<br />
Note: required by autopano-sift-c only, not by enblend or hugin. Untested and unchanged from MSVC 2008 version because autopano-sift-c untested.<br />
<ol><br />
<li>Decompress the file <tt>libxml2-sources-2.7.3.tar.gz</tt> to directory <tt><SDKHOME></tt></li><br />
<li><br />
{| class="wikitable" <br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | 32-Bit Directions<br />
! style="padding:5px; text-align:left" | 64-Bit Directions<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | <ol><li>To open a Visual Studio command prompt choose Start > Programs > Microsoft Visual C++ 2008 Express Edition > Visual Studio Tools > Visual Studio 2008 Command Prompt</li></ol><br />
| style="padding: 5px; text-align:left" | <ol><br />
<li>Open a Windows SDK prompt by choosing Start -> Programs -> Microsoft Windows SDK v6.1 -> CMD Shell</li><br />
<li>On the command prompt, enter the following command without any line breaks and press the Return/Enter key:<br/><br />
<pre><br />
setenv /Release /x64 /xp<br />
</pre><br />
It should now refresh and say<br />
<pre><br />
Setting SDK environment relative to <path where you installed the SDK><br />
Targeting Windows XP x64 RELEASE<br />
</pre></li><br />
</ol><br />
|}<br />
</li><br />
<br />
<li>On command prompt change directory to <tt><SDKHOME>\libxml2-2.7.3\win32</tt><br/><br />
'''Example'''<br />
<pre><br />
Setting environment for using Microsoft Visual Studio 2008 x86 tools.<br />
<br />
C:\Program Files\Microsoft Visual Studio 9.0\VC>d:<br />
<br />
D:\>cd \usr\src\SDK\libxml2-2.7.3\win32 <br />
<br />
D:\usr\src\SDK\libxml2-2.7.3\win32><br />
</pre><br />
<br />
<li>Enter each of the following two commands without any line break and press the Return key.<br />
<pre><br />
cscript configure.js ftp=no http=no iconv=no cruntime=/MT<br />
nmake -f makefile.msvc libxmla<br />
</pre><br />
</li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The include files reside in<br />
<tt><SDKHOME>\libxml2-2.7.3\include</tt><br />
<br />
The libraries reside in<br />
<tt><SDKHOME>\libxml2-2.7.3\win32\bin.msvc</tt><br />
<br />
{| class="wikitable" width="100%"<br />
|-<br />
! style="padding:5px; text-align:left" | Notes<br />
|-<br />
| style="padding:5px; text-align:left" | <ul><br />
<li>During build process temporary object files are generated in directory<br />
<tt><SDKHOME>\libxml2-2.7.3\win32\int.a.msvc</tt>.<br />
This directories may be deleted to save disc space.</li><br />
<li>Hugin does not depend on libxml2 library, but autopano-sift-C. Therefore it is included in this SDK.</li><br />
</ul><br />
|}<br />
<br />
=== autopano-sift-C ===<br />
<br />
Note: Untested and unchanged from MSVC 2008 version because of patent restrictions for U.S.-based author ([[User:Helser|Aron Helser]]).<br/><br />
Autopano-SIFT-C depends on following SDK components:<br />
<ul><br />
<li>libxml2</li><br />
<li>Panorama Tool's pano13 library</li><br />
<li>wxWidgets</li><br />
</ul><br />
Prepare these components before Autopano-SIFT-C.<br />
<br />
<ol><br />
<li>Create the directory <tt><SDKHOME>\autopano-sift-C-trunk</tt></li><br />
<li>In explorer right-click on created directory <tt><SDKHOME>\autopano-sift-C-trunk</tt>, and then choose SVN Checkout from the shortcut menu. The Checkout dialog appears.</li><br />
<li>In "URL of repository" field enter following address:<br />
<pre><br />
https://hugin.svn.sourceforge.net/svnroot/hugin/autopano-sift-C/trunk<br />
</pre><br />
</li><br />
<li>Click OK</li><br />
<li>After checkout has finished click OK</li><br />
<li>Start CMake (cmake-gui). The CMake dialog appears.</li><br />
<li>In "Where is the source code" field enter<br />
<pre><br />
<SDKHOME>\autopano-sift-C-trunk<br />
</pre><br />
Alternatively click Browse Source to point to this directory</li><br />
<li>In "Where to build the binaries" field enter<br />
<pre><br />
<SDKHOME>\autopano-sift-C<br />
</pre><br />
</li><br />
<li>Click Configure<br/><br />
If a dialog appears, which asks to create the build directoy, click Yes.<br/><br />
A dialog appears, where you can specify the generator for the project.</li><br />
<li><br />
{| class="wikitable" <br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | 32-Bit Directions<br />
! style="padding:5px; text-align:left" | 64-Bit Directions<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | Select "Visual Studio 9 2008" and select option "Use default native compilers"<br />
| style="padding:5px; text-align:left" | Select "Visual Studio 9 2008 Win64" and select option "Use default native compilers"<br />
|}</li><br />
<li>Click Finish<br/><br />
In the Name and Value list the entries are shown with red background.</li><br />
<li>Click Configure</li><br />
<li>Click Generate</li><br />
<li>Close CMake</li><br />
<li>Open solution file <tt><SDKHOME>\autopano-sift-C\autopano-sift-C.sln</tt></li><br />
<li>Select Release in Solution Configuration pull-down menu, and then choose Build > Build Solution</li><br />
<li>Select project INSTALL in Solution Explorer, and then choose Build > Project Only > Build Only INSTALL</li><br />
<li>Close Visual C++ 2008 Express Edition</li><br />
<li><br />
Copy the directories <tt>bin</tt> and <tt>shared</tt> from <tt><SDKHOME>\autopano-sift-C\INSTALL\FILES</tt> to <tt><SDKHOME>\autopano-sift-C</tt></li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The applications reside in<br />
<tt><SDKHOME>\autopano-sift-C\bin</tt><br />
<br />
The manual pages reside in<br />
<tt><SDKHOME>\autopano-sift-C\shared</tt><br />
<br />
{| class="wikitable" width="100%"<br />
|- valign="top"<br />
! style="padding:5px; text-align:left" | Note<br />
|- valign="top"<br />
| style="padding:5px; text-align:left" | To save disk space you may delete all files and directories in <tt><SDKHOME>\autopano-sift-C</tt>, except the subdirectories <tt>bin</tt> and <tt>shared</tt>.<br />
|}<br />
<br />
=== Freeglut ===<br />
<ol><br />
<li>Decompress the file <tt>freeglut-2.6.0.tar.gz</tt> to directory <tt><SDKHOME></tt></li><br />
<li>Open the file <tt><SDKHOME>\freeglut-2.6.0\VisualStudio2008Static\freeglut.sln</tt></li><br />
<li>Select "Debug" in the Solution Configuration pull-down menu. </li><br />
<li>Select project freeglut in Solution Explorer, and then choose Build > Project Only > Build Only freeglut</li><br />
<li>Select "Release" in the Solution Configuration pull-down menu. </li><br />
<li>Select project freeglut in Solution Explorer, and then choose Build > Project Only > Build Only freeglut</li><br />
<li>Close Visual Studio C++ 2010 Express </li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The library resides in <tt><SDKHOME>\freeglut-2.6.0\VisualStudio2008Static\Debug</tt> and <tt><SDKHOME>\freeglut-2.6.0\VisualStudio2008Static\Release</tt><br />
<br />
=== GNU Make ===<br />
<ol><br />
<li>Decompress the file <tt>make-3.81.tar.gz</tt> to directory <tt><SDKHOME></tt></li><br />
<li>Open the file <tt><SDKHOME>\make-3.81\make_msvc_net2003.sln</tt> (Confirm conversion.)</li> <br />
<li>Select "Release" in the Solution Configuration pull-down menu. </li><br />
<li>Select project make_msvc.net2003 Solution Explorer, and then choose Build > Project</li><br />
<li>Close Visual Studio C++ 2010 Express </li><br />
<li>Rename the file <tt><SDKHOME>\make-3.81\Release\make_msvc.net2003.exe</tt> to <tt><SDKHOME>\make-3.81\Release\make.exe</tt><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The executable make.exe resides in <tt><SDKHOME>\make-3.81\Release\</tt><br />
<br />
(All other files in this directory can be deleted to save space.)<br />
<br />
--Created: [[User:Helser|Aron Helser]] 16:20, 29 June 2010 (UTC)<br />
<br />
=== Templatized C++ Command Line Parser Library (tclap) ===<br />
<br />
<ol><br />
<li>Decompress the file <tt>tclap-1.2.0.tar.gz</tt> to directory <tt><SDKHOME>\tclap-1.2.0</tt></li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The include files reside in<br />
<tt><SDKHOME>\tclap-1.2.0\include\tclap</tt><br />
<br />
=== Glib library ===<br />
<br />
Needed by the lensfun library<br />
<br />
<ol><br />
<li> Decompress the file <tt>glib-2.28.8.tar.bz2</tt> to directory <tt><SDKHOME>\glib-2.28.8</tt></li><br />
<li> Open project file in <tt>glib\2.28.8\build\win32\vs10\</tt> </li><br />
<li> Select "Release" in the Solution Configuration pull-down menu. </li><br />
<li> '''64-bit only:''' Select "x64" in the Platform pull-down menu. </li><br />
<li> Do the following modifications: <br />
<ul><br />
<li> Remove the projects glib-compile-schemas, glib-genmarshal, gsettings, gspawn-win32-helper, gspawn-win32-helper-console and testglib. There are not needed. </li><br />
<li> Change type to "static libary (.lib)" for all projects.</li><br />
<li> Change run-time library to "Multi-threaded /MT" for all projects.</li><br />
<li> Project gio: Replace preprocessor _USRDLL directive with GIO_STATIC_COMPILATION</li><br />
<li> Project glib, gmodule, gthread: Replace preprocessor _USRDLL directive with GLIB_STATIC_COMPILATION</li><br />
<li> Project gobject: Replace preprocessor _USRDLL directive with GOBJECT_STATIC_COMPILATION</li><br />
<li> Start building. It will create some config file and will then fail with error messages regarding intl.h </li><br />
<li> Open <tt><SDKHOME>\glib-2.28.8\config.h</tt>, comment out line 29: <tt> // #define ENABLE_NLS 1 </tt> </li><br />
<li> Project gio: Add path to zlib includes in wxWidgets to search path: <SDKHOME>\wxWidgets-x.x.x\src\zlib </li><br />
<li> '''64-bit only:''' Change target machine to "MachineX64 (/MACHINE:X64)" for all projects. </li><br />
<li> Open menu <tt>View, Properties manager</tt> and expand INSTALL project, go to Release|Win32; glib.props; select properties, in User macros change <tt>CopyDir</tt> and <tt>GlibEtcInstallRoot</tt> from <tt>..\..\..\..\..\vs10\$(Platform)</tt> to <tt>..\..\..\</tt><br />
<li> Build target INSTALL </li><br />
</ul><br />
</li><br />
<li> Copy the all lib files from <tt><SDKHOME>\glib-2.28.8\build\Win32\vs10\Release\Win32\bin</tt> (for 64-bit version in <tt><SDKHOME>\glib-2.28.8\build\Win32\vs10\Release\x64\bin</tt>) and <tt><SDKHOME>\glib-2.28.8\lib</tt>.</li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
The include files reside in <tt><SDKHOME>\glib-2.28.8\include</tt>, the libraries in <tt><SDKHOME>\glib-2.28.8\lib</tt><br />
<br />
=== Lensfun library ===<br />
<br />
<ol><br />
<li> Pull from subversion: svn://svn.berlios.de/lensfun to <tt><SDKHOME>\lensfun-svn</tt> </li><br />
<ul><br />
<li> In Explorer go to <tt><SDKHOME></tt>, open context menu (right mouse button), select "SVN Checkout", give URL: <tt>svn://svn.berlios.de/lensfun</tt> and path <tt><SDKHOME>\lensfun-svn</tt> </li><br />
</ul><br />
<li> Build library with CMake <br />
<ul><br />
<li> Start CMake-GUI </li><br />
<li> Point "Where is the source code:" to <tt><SDKHOME>\lensfun-svn</tt> </li><br />
<li> Point "Where to build:" to <tt><SDKHOME>\build-lensfun</tt> </li><br />
<li> Click Configure and select "Visual Studio 10" (or "Visual Studio 10 Win64" for 64-bit) </li><br />
<li> Set option <tt>BUILD_STATIC</tt> to on/TRUE </li><br />
<li> Check <tt>GLIB2_BASE_DIR</tt> and set to your GLIB2 directory. </li><br />
<li> Click Configure again, then Generate </li><br />
</ul><br />
</li><br />
<li> Open generated project file lensfun.sln in <tt><SDKHOME>\build-lensfun</tt>, select "Release" in the Solution Configuration pull-down menu and build target INSTALL </li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
All necessary files reside in <tt><SDKHOME>\lensfun</tt><br />
<br />
=== Nullsoft Scriptable Install System (NSIS) ===<br />
Note: Only needed to build Hugin Setup installer<br />
<ol><br />
<li>Run the NSIS installer, <tt>nsis-2.46-setup.exe</tt>, installing to the default location.</li><br />
</ol><br />
<br />
'''Result'''<br />
<br />
NSIS should be installed to <tt><DRIVE>\Program Files\NSIS</tt><br />
<br />
[[Category:Software:Hugin]]<br />
[[Category:Software:Hugin:Compiling]]<br />
[[Category:Software:Platform:Windows]]</div>Morray