开篇提示:本文为本人原创,本文欢迎转载,但必须注明本文出处,例如:
否则说明阁下愿意支付以100元人民币每字计的稿费,敬请留意。“该文引用自 CruiseYoung的:“nmake、cmake、Visual Studio编译zlib” http://blog.csdn.net/fksec/article/details/25906419”
1 下载软件包
下载zlib:http://www.zlib.net/
2 准备工作
2.1 解压“zlib128.zip”到当前文件夹,在3.1或4.2的命令窗口中用以下命令切换到“zlib-1.2.8”目录:
cd /d E:\Projects\compile\zlib-1.2.8
2.2 阅读:
“zlib-1.2.8\contrib\vstudio\readme.txt”“zlib-1.2.8\win32\Makefile.msc”
2.3 将“zlib-1.2.8\win32\Makefile.msc”中的"TOP = ."改为"TOP = ..";去掉“CFLAGS”中的“-MD”选项;
2.4 将“zlib-1.2.8\win32\Makefile.msc”文件复制一份,并更名为“zlib-1.2.8\win32\Makefile_release.msc”;
2.5 将“zlib-1.2.8\win32\Makefile_release.msc”文件内,去掉“CFLAGS”中的“-Oy-”选项;
2.6 将“zlib-1.2.8\win32\Makefile.msc”文件内“LDFLAGS = -nologo -debug -incremental:no -opt:ref”中的“-incremental:no -opt:ref”去掉;
3 x86位编译(use ASM code, x86)
3.1 编译环境:点击“开始”-->"所有程序"-->"Visual Studio 2013"-->"Visual Studio Tools"-->"VS2013 x86 本机工具命令提示"
3.2 Debug编译,请依次输入以下命令:
mkdir bld_debug_x86 cd bld_debug_x86 nmake -f ../win32/Makefile.msc LOC="-DASMV -DASMINF -I.." OBJA="inffas32.obj match686.obj" all nmake -f ../win32/Makefile.msc LOC="-DASMV -DASMINF -I.." OBJA="inffas32.obj match686.obj" test nmake -f ../win32/Makefile.msc LOC="-DASMV -DASMINF -I.." OBJA="inffas32.obj match686.obj" testdll set ZLIB_ROOT_DIR=D:\comm\zlib\debug_x86 mkdir %ZLIB_ROOT_DIR% mkdir %ZLIB_ROOT_DIR%\bin copy /Y zlib1.dll %ZLIB_ROOT_DIR%\bin set ZLIB_INCLUDE_DIRS=%ZLIB_ROOT_DIR%\include mkdir %ZLIB_INCLUDE_DIRS% copy /Y ..\zconf.h %ZLIB_INCLUDE_DIRS% copy /Y ..\zlib.h %ZLIB_INCLUDE_DIRS% set ZLIB_LIBRARY=%ZLIB_ROOT_DIR%\lib mkdir %ZLIB_LIBRARY% copy /Y zdll.lib %ZLIB_LIBRARY% copy /Y zlib1.pdb %ZLIB_LIBRARY% copy /Y zlib.lib %ZLIB_LIBRARY% copy /Y zlib.pdb %ZLIB_LIBRARY% mkdir %ZLIB_ROOT_DIR%\share\man\man3 copy /Y ..\zlib.3 %ZLIB_ROOT_DIR%\share\man\man3 mkdir %ZLIB_ROOT_DIR%\share\pkgconfig copy /Y ..\zlib.pc.in %ZLIB_ROOT_DIR%\share\pkgconfig\zlib.pc nmake -f ../win32/Makefile.msc LOC="-DASMV -DASMINF -I.." OBJA="inffas32.obj match686.obj" clean cd..
3.3 Release编译,请依次输入以下命令:
mkdir bld_release_x86 cd bld_release_x86 nmake -f ../win32/Makefile_release.msc LOC="-DASMV -DASMINF -I.." OBJA="inffas32.obj match686.obj" all nmake -f ../win32/Makefile_release.msc LOC="-DASMV -DASMINF -I.." OBJA="inffas32.obj match686.obj" test nmake -f ../win32/Makefile_release.msc LOC="-DASMV -DASMINF -I.." OBJA="inffas32.obj match686.obj" testdll set ZLIB_ROOT_DIR=D:\comm\zlib\release_x86 mkdir %ZLIB_ROOT_DIR% mkdir %ZLIB_ROOT_DIR%\bin copy /Y zlib1.dll %ZLIB_ROOT_DIR%\bin set ZLIB_INCLUDE_DIRS=%ZLIB_ROOT_DIR%\include mkdir %ZLIB_INCLUDE_DIRS% copy /Y ..\zconf.h %ZLIB_INCLUDE_DIRS% copy /Y ..\zlib.h %ZLIB_INCLUDE_DIRS% set ZLIB_LIBRARY=%ZLIB_ROOT_DIR%\lib mkdir %ZLIB_LIBRARY% copy /Y zdll.lib %ZLIB_LIBRARY% copy /Y zlib1.pdb %ZLIB_LIBRARY% copy /Y zlib.lib %ZLIB_LIBRARY% copy /Y zlib.pdb %ZLIB_LIBRARY% mkdir %ZLIB_ROOT_DIR%\share\man\man3 copy /Y ..\zlib.3 %ZLIB_ROOT_DIR%\share\man\man3 mkdir %ZLIB_ROOT_DIR%\share\pkgconfig copy /Y ..\zlib.pc.in %ZLIB_ROOT_DIR%\share\pkgconfig\zlib.pc nmake -f ../win32/Makefile_release.msc LOC="-DASMV -DASMINF -I.." OBJA="inffas32.obj match686.obj" clean cd..
4 x64位编译(use ASM code, x64)
4.1 编译环境:点击“开始”-->"所有程序"-->"Visual Studio 2013"-->"Visual Studio Tools"-->"VS2013 x64 本机工具命令提示"
4.2 Debug编译,请依次输入以下命令:
mkdir bld_debug_x64 cd bld_debug_x64 nmake -f ../win32/Makefile.msc AS=ml64 LOC="-DASMV -DASMINF -I.." OBJA="inffasx64.obj gvmat64.obj inffas8664.obj" all nmake -f ../win32/Makefile.msc AS=ml64 LOC="-DASMV -DASMINF -I.." OBJA="inffasx64.obj gvmat64.obj inffas8664.obj" test nmake -f ../win32/Makefile.msc AS=ml64 LOC="-DASMV -DASMINF -I.." OBJA="inffasx64.obj gvmat64.obj inffas8664.obj" testdll set ZLIB_ROOT_DIR=D:\comm\zlib\debug_x64 mkdir %ZLIB_ROOT_DIR% mkdir %ZLIB_ROOT_DIR%\bin copy /Y zlib1.dll %ZLIB_ROOT_DIR%\bin set ZLIB_INCLUDE_DIRS=%ZLIB_ROOT_DIR%\include mkdir %ZLIB_INCLUDE_DIRS% copy /Y ..\zconf.h %ZLIB_INCLUDE_DIRS% copy /Y ..\zlib.h %ZLIB_INCLUDE_DIRS% set ZLIB_LIBRARY=%ZLIB_ROOT_DIR%\lib mkdir %ZLIB_LIBRARY% copy /Y zdll.lib %ZLIB_LIBRARY% copy /Y zlib1.pdb %ZLIB_LIBRARY% copy /Y zlib.lib %ZLIB_LIBRARY% copy /Y zlib.pdb %ZLIB_LIBRARY% mkdir %ZLIB_ROOT_DIR%\share\man\man3 copy /Y ..\zlib.3 %ZLIB_ROOT_DIR%\share\man\man3 mkdir %ZLIB_ROOT_DIR%\share\pkgconfig copy /Y ..\zlib.pc.in %ZLIB_ROOT_DIR%\share\pkgconfig\zlib.pc nmake -f ../win32/Makefile.msc AS=ml64 LOC="-DASMV -DASMINF -I.." OBJA="inffasx64.obj gvmat64.obj inffas8664.obj" clean cd..
4.3 Release编译,请依次输入以下命令:
mkdir bld_release_x64 cd bld_release_x64 nmake -f ../win32/Makefile_release.msc AS=ml64 LOC="-DASMV -DASMINF -I.." OBJA="inffasx64.obj gvmat64.obj inffas8664.obj" all nmake -f ../win32/Makefile_release.msc AS=ml64 LOC="-DASMV -DASMINF -I.." OBJA="inffasx64.obj gvmat64.obj inffas8664.obj" test nmake -f ../win32/Makefile_release.msc AS=ml64 LOC="-DASMV -DASMINF -I.." OBJA="inffasx64.obj gvmat64.obj inffas8664.obj" testdll mkdir D:\comm mkdir D:\comm\zlib mkdir D:\comm\zlib\release_x64 mkdir D:\comm\zlib\release_x64\bin copy /Y zlib1.dll D:\comm\zlib\release_x64\bin mkdir D:\comm\zlib\release_x64\include copy /Y ..\zconf.h D:\comm\zlib\release_x64\include copy /Y ..\zlib.h D:\comm\zlib\release_x64\include mkdir D:\comm\zlib\release_x64\lib copy /Y zdll.lib D:\comm\zlib\release_x64\lib copy /Y zlib1.pdb D:\comm\zlib\release_x64\lib copy /Y zlib.lib D:\comm\zlib\release_x64\lib copy /Y zlib.pdb D:\comm\zlib\release_x64\lib mkdir D:\comm\zlib\release_x64\share mkdir D:\comm\zlib\release_x64\share\man mkdir D:\comm\zlib\release_x64\share\man\man3 copy /Y ..\zlib.3 D:\comm\zlib\release_x64\share\man\man3 mkdir D:\comm\zlib\release_x64\share\pkgconfig copy /Y ..\zlib.pc.in D:\comm\zlib\release_x64\share\pkgconfig\zlib.pc nmake -f ../win32/Makefile_release.msc AS=ml64 LOC="-DASMV -DASMINF -I.." OBJA="inffasx64.obj gvmat64.obj inffas8664.obj" clean cd..
5 Visual Studio编译“zlib”
5.1 打开“zlib-1.2.8\contrib\vstudio”目录;
5.2 “Visual Studio 2008”到“Visual Studio 2012”已经有对应的工程;
5.3 “Visual Studio 2013”及以后的VS版本:打开“zlib-1.2.8\contrib\vstudio\vc11\zlibvc.sln”将所有工程升级到当前版本;
6 “cmake”编译“zlib”(以x64平台为例)
6.1 编译环境:点击“开始”-->"所有程序"-->"Visual Studio 2013"-->"Visual Studio Tools"-->"VS2013 x64 本机工具命令提示" 打开命令窗口;
6.2 解压“zlib128.zip”到当前文件夹,用以下命令切换到“zlib-1.2.8”目录:6.3 Debug编译,请依次输入以下命令:cd /d E:\Projects\compile\zlib-1.2.8
mkdir bld_debug_x64_cmake cd bld_debug_x64_cmake cmake .. -G "Visual Studio 12 2013 Win64" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=D:\comm\zlib\debug_x64_cmake devenv zlib.sln /build Debug /out logfile.txt cmake --build . --target INSTALL --config Debug
如要重新编译,则先输入以下命令:
6.4 Release编译,请依次输入以下命令:del CMakeCache.txt devenv zlib.sln /clean Debug cd..
mkdir bld_release_x64_cmake cd bld_release_x64_cmake cmake .. -G "Visual Studio 12 2013 Win64" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=D:\comm\zlib\release_x64_cmake devenv zlib.sln /build Release /out logfile.txt cmake --build . --target INSTALL --config Release
如要重新编译,则先输入以下命令:
6.5 “MinSizeRel”、“RelWithDebInfo”版本的编译与“6.3”和“6.4”类似;del CMakeCache.txt devenv zlib.sln /clean Release cd..
7 参考文章“cmake”编译“zlib”
见:Windows上编译zlib - Len3d - 博客园
http://www.cnblogs.com/len3d/archive/2013/07/19/3201054.html