Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

On Windows, zlib is pretty much a mess. The only modern project files are for building a DLL that uses the WINAPI calling convention for Visual Basic applications, and the default Makefile doesn't handle debug builds, or create properly versioned DLL and import library names. Short of a total rewrite, I built this by manually adjusting the makefile with different settings, running a build, and then copying the output files into separate directories.

Copying OpenSSL's sound versioning discipline, they also just added two entry points to a patch release.

First I do the 32-bit Release build:

  • Edit win32/Makefile.msc and change:

    • IMPLIB

    to
    • =zlib1.lib

    • SHAREDLIB=zlib1_2.dll

  • nmake /f win32\Makefile.msc
  • mkdir Release
  • copy zlib1.* Release
  • nmake /f win32\Makefile.msc clean

...

  • mkdir x64
  • mkdir x64\Release
  • nmake /f win32\Makefile.msc
  • copy zlib1.* x64\Release
  • nmake /f win32\Makefile.msc clean

...

  • Edit win32/Makefile.msc and change:
    • IMPLIB
    to
    • =zlib1D.lib
    and SHAREDLIB to zlib1D
    •  SHAREDLIB=zlib1_2D.dll
  • Change CFLAGS and turn /MD into /MDd, and add -D_DEBUG to WFLAGS
  • nmake win32/Makefile.msc
  • mkdir Debug
  • copy zlib1D.* Debug
  • nmake /f win32\Makefile.msc clean

Now, the 64-bit Debug build, switching back to the x64 Tools command prompt:

  • mkdir x64\Debug
  • nmake /f win32\Makefile.msc
  • copy zlib1D.* x64\Debug
  • nmake /f win32\Makefile.msc clean


The following files dependencies subdirectory of the cpp-msbuild project can be used to automate the build:

  • ..\cpp-msbuild\dependencies\config.bat to set up the environment
  • ..\cpp-msbuild\dependencies\zlib.bat to create the modified makefiles (requires 'sed' on the path)
  • X86 build (requires the appropriate VS command line):

    Code Block
    ..\cpp-msbuild\dependencies\zlib-compile.bat .
  • X64 build (requires the appropriate VS command line):

    Code Block
    ..\cpp-msbuild\dependencies\zlib-compile.bat x64