How to build Windows binaries

Building binaries of IIPImage on your own isn't simple task, mainly because of required dependencies, but following this tutorial, you should be able to build it. This tutorial includes instructions for Visual Studio 2010 and both 32bit and 64bit versions. Dependencies for basic IIPImage Server, without support for JPEG 2000 and Memcached are: libfcgi, libjpeg, libtiff, zlib. If you want support for JPEG 2000 you must add Kakadu dependency and if you also want Memcached support add MemCacheClient dependency. Download links are included within instructions. Big thanks to Rob 'Buba' Hines for creating his tutorial.


Download IIPImage from github:
Git clone from main repository: https://github.com/ruven/iipsrv (or download zip)

Building dependencies:

1. LibFCGI:

(Tested with version 2.4.1 - SNAP): http://www.fastcgi.com/dist/fcgi-2.4.1-SNAP-0910052249.tar.gz

    1. Open fcgi-2.4.1-SNAP-0910052249\Win32\config_h.dsp in Visual Studio. (Convert and Open Projects -Yes)
    2. Build Release|Win32 (or Release|x64 for 64bit)
    3. 
Open fcgi-2.4.1-SNAP-0910052249\Win32\libfcgi.dsp in Visual Studio. (Convert and Open Projects -Yes)
    4
. Build Release|Win32 (or Release|x64 for 64bit)
    5. Verify, that libfcgi.lib and libfcgi.dll exist in folder fcgi-2.4.1-SNAP-0910052249\libfcgi\Release (or x64\Release)
    6. Copy 
libfcgi.lib into iipsrv\windows\dependencies\dlls\x86 or x64 and libfcgi.dll into iipsrv\windows\dependencies\libs\x86 or x64
    7. Copy header files from fcgi-2.4.1-SNAP-0910052249\include into iipsrv\windows\dependencies\includes

2. LibJPEG:

(Tested with version 9a): http://www.ijg.org/files/jpegsr9a.zip

    1. Run Visual Studio Command prompt (Start->Visual Studio Command Prompt (2010)) or x64
        You must use Visual Studio Command prompt appropriate to version you are building 32/64bit.
    2. Run NMAKE /f makefile.vc setup-v10 (Start -> Visual Studio Command Prompt, go to jpeg-9a folder, type it and press enter)
    3. Open the solution file jpeg-9a\jpeg.sln
    4. Build the Release|Win32 (or Release|x64)
    5. Verify jpeg-9a\Release\jpeg.lib exists and copy it to iipsrv\windows\dependencies\libs\x86 or x64
    7. Copy header files from jpeg-9a to iipsrv\windows\dependencies\includes

LibTiff:

(Tested with version 4.0.3): http://download.osgeo.org/libtiff/tiff-4.0.3.zip

    1. Run Visual Studio Command prompt (Start->Visual Studio Command Prompt (2010)) or x64
        You must use Visual Studio Command prompt appropriate to version you are building 32/64bit.
    2. Run NMAKE /f makefile.vc (Start -> Visual Studio Command Prompt, go to tiff-4.0.3\libtiff folder, type it and press enter)
    3. Verify, that tiff-4.0.3\libtiff\libtiff.lib exists and copy it to iipsrv\windows\dependencies\libs\x86 or x64
    4. Copy header files from tiff-4.0.3\libtiff to iipsrv\windows\dependencies\includes

Zlib:

(Tested with version 1.2.8): http://zlib.net/zlib128.zip

    1. Open zlib-1.2.8\contrib\vstudio\vc10\zlibvc.sln
    2. Build the Release|Win32 (or Release|x64) of zlibstat project
    3. Verify, that zlibstat.lib exists in folder zlib-1.2.8\contrib\vstudio\vc10\ZlibStatRelease (or x64\ZlibStatReleaseand copy it to iipsrv\windows\dependencies\libs\x86 or x64
    4. Copy header files from zlib-1.2.8 to iipsrv\windows\dependencies\includes

MemCacheClient:

(Tested with version 2.0): http://code.jellycan.com/files/memcacheclient-2.0.zip

    1. Open memcacheclient\MemCacheClient.vcxproj
    2. In Properties -> C/C++ -> Code Generation -> Runtime Library set to Multi-threaded DLL (the same as is set in iipsrv project)
    3Build the Release|Win32 (or Release|x64)
    4. Verify, that MemCacheClient.lib exists in folder memcacheclient\Release and copy it to iipsrv\windows\dependencies\libs\x86 or x64
    5. 
Copy header files from memcacheclient to iipsrv\windows\dependencies\includes

Kakadu:

(Tested with version 7.2): Closed-source commercial products

    (Closer instructions are in Compiling_Instructions.txt in main folder of Kakadu source)
    1. Open coresys/coresys_2010.sln
    2. Build the Release|Win32 (or Release|x64)
    3. Verify folders lib_x86 and bin_x86 (or x64) were created and contain kdu_v72R.lib and kdu_v72R.dll (folders are created outside kakadu folder)
    4. Copy kdu_v72R.lib and kdu_v72R.dll to iipsrv\windows\dependencies\dlls\x86 or x64 and to iipsrv\windows\dependencies\libs\x86 or x64
    5. Copy header files from apps/compressed_io, apps/jp2 and coresys/common folder in Kakadu source and also stripe_compressor_local.h, stripe_decompressor_local.h, kdu_stripe_compressor.h and kdu_stripe_decompressor.h from apps/support folder in Kakadu source into iipsrv\windows\dependencies\includes             
    6. Copy cpp files jp2.cpp and jpx.cpp (apps/jp2 folder in Kakadu source) and also kdu_stripe_compressor.cpp and kdu_stripe_decompressor.cpp (apps/support folder in Kakadu source) into iipsrv\windows\dependencies\includes


Building IIPImage:

Updating project:

    If you don't want to build with Memcached or Kakadu remove appropriate preprocessor definition
    Project properties -> C/C++ -> Preprocessor -> Preprocessor Definitions: HAVE_KAKADU;HAVE_MEMCACHED;

    If building with Kakadu 7.0 or higher add also preprocessor definition CORESYS_IMPORTS;

Building project:

    1. You should have already copied header files of dependencies in iipsrv\windows\dependencies\includes and library files of dependencies in iipsrv\windows\dependencies\libs\x86 or x64
    2. Open iipsrv\windows\
iipsrv-MSVC2010.sln
    3. Build Release|Win32 (or Release|x64)
    4. Check, that iipsrv.exe was created in folder iipsrv\windows\Release (or x64\Release)

ċ
MemcachedWindows.h
(4k)
Michal Běčák,
Sep 17, 2012, 2:25 AM
Comments