pdf版:http://library-prebuilt-for-windows.googlecode.com/files/%E7%B7%A8%E8%AD%AF%20zlib.pdf
新手教學,高手別來無恙。
今天來教大家最簡單的zlib 喔喔喔!!!
簡介一下
這是一個壓壓壓縮用的 library 喔
大朋友小朋友聽好了喔~
現在要開始了喔~~~~
首先搜尋 zlib
搜尋結果如下:
這邊我用的是 google 喔!
如果用不同的網站可能搜尋到不同的結果不要怪我喔!
看來第一個結果就是我們要的,
今天的運氣真不錯,哈哈!心情有點好!
進到他的官網後,看到了
綠色大大的 zlib 四個字,
版本 1.2.7 版本 2012年5月2號
看來是個一年前的版本了
往下拉呀拉~
看到了載點這
前三個是 源始碼
最後一個是編好的 DLL
我就挑第一個載啦~~
載下來解壓縮後
好多東西喔!
發現 CMakeLists.txt 那就先來試試 用 CMake 來編譯吧!
一樣先搜尋一下CMake
開始安裝~
執行後設定好目錄
按下Configure
按yes
選一個喜歡的~
把Advanced 打勾
;MinSizeRel;RelWithDebInfo 兩個組態砍掉因為用不到。
到build 的地方
有一堆 project 耶!
不過感覺只有 zlib 跟 zlibstatic 是我們要的,
編譯一下看看吧!
編出來了一點東西
好現在我們編譯八種組態吧~
就是vc11 x64的所有組態
MTd x64 Dynamic:
zlib-sgd-x64.lib & zlib-sgd-x64.dll
MT x64 Dynamic:
zlib-s-x64.lib & zlib-s-x64.dll
MDd x64 Dynamic:
zlib-gd-x64.lib & zlib-gd-x64.dll
MD x64 Dynamic:
zlib-x64.lib & zlib-x64.dll
MTd x64 Static:
libzlib-sgd-x64.lib
MT x64 Static:
libzlib-s-x64.lib
MDd x64 Static:
libzlib-gd-x64.lib
MD x64 Static:
libzlib-x64.lib
這一套命名是參考 boost 的,不過沒有把 vc11 跟 1.2.7 加上去
編譯的library 會以 project file 路徑為基準來做相對路徑
以這邊來說
我的project file 在 C:\test\zlib-1.2.7\build
我要把編好的lib放在 C:\test\zlib-1.2.7\lib
MDd x64 Dynamic:
zlib-gd-x64.lib & zlib-gd-x64.dll
MD x64 Dynamic:
zlib-x64.lib & zlib-x64.dll
MDd x64 Static:
libzlib-gd-x64.lib
剛剛這樣已經設定好了四個組態還差四種,
首先要加入兩個新組態
點右上角組態管理員
新增Debug MT 從 Debug 複製
跟 Release MT
把Debug MT的執行階段程式庫改成 MTd
把Release MT的執行階段程式庫改成 MT
然後照著設定一下吧!
MTd x64 Dynamic:
zlib-sgd-x64.lib & zlib-sgd-x64.dll
MT x64 Dynamic:
zlib-s-x64.lib & zlib-s-x64.dll
MTd x64 Static:
libzlib-sgd-x64.lib
MT x64 Static:
libzlib-s-x64.lib
終於設定完了 要編譯了~~
有沒有很感動?
超感動的對吧~
接下來按下 建置->批次建置
選擇剛剛設定好的組態再按建置
經過一段慢長的努力 3秒後得到了 12個成功
感覺好爽喔 有 12 個耶~
多出來的4個是cmake的ZERO_CHECK
編好了,真的好感動喔!
就像是用愛感動了小屁孩一樣的感動,淚流滿面了。
新增一個 include 的資料夾
複製 .h 進去
還有在 build 資料夾裡的 zconf.h
加入一個 auto_link_zlib.hpp的檔案開始編輯
看了一下 zconf.h
發現 有 ZLIB_DLL 就是動態 否則 為靜態
可以編寫出下列這樣的 自動連結檔
#pragma once
#define ZLIB_LIB_NAME "zlib"
#if defined(ZLIB_DLL)
# define ZLIB_LIB_PREFIX
#else
# define ZLIB_LIB_PREFIX "lib"
#endif
# define ZLIB_LIB_PLATFORM "-x64"
#ifdef _DLL
# if defined(_DEBUG)
// MDd
# define ZLIB_LIB_RT_OPT "-gd"
# else
// MD
# define ZLIB_LIB_RT_OPT
# endif
#else
# if defined(_DEBUG)
// MTd
# define ZLIB_LIB_RT_OPT "-sgd"
# else
// MT
# define ZLIB_LIB_RT_OPT "-s"
# endif
#endif
# pragma comment(lib, ZLIB_LIB_PREFIX ZLIB_LIB_NAME ZLIB_LIB_RT_OPT ZLIB_LIB_PLATFORM ".lib")
// static MDd x64 : libzlib-gd-x64.lib
// static MD x64 : libzlib-x64.lib
// static MTd x64 : libzlib-sgd-x64.lib
// static MT x64 : libzlib-s-x64.lib
// dll MDd x64 : zlib-gd-x64.lib
// dll MD x64 : zlib-x64.lib
// dll MTd x64 : zlib-sgd-x64.lib
// dll MT x64 : zlib-s-x64.lib
最後再把中繼檔砍掉就大功告成了!
寫一個 powershell 來幫忙好了!
符合下面副檔名的通通掰掰!
dir -r | % {if ($_ -like "*.obj" -or
$_ -like "*.ilk" -or
$_ -like "*.ncb" -or
$_ -like "*.sdf" -or
$_ -like "*.idb" -or
$_ -like "*.res" -or
$_ -like "*.pdb" -or
$_ -like "*.pch" -or
$_ -like "*.tlog" -or
$_ -like "*.lastbuildstate" -or
$_ -like "*.log" -or
$_ -like "*.old" -or
$_ -like "*.ipch" -or
$_ -like "*.o" -or
$_ -like "BuildLog.htm")
{
"del " + $_.fullname
del $_.fullname
}
}
再來就壓一壓上傳上去了呀~~
http://code.google.com/p/library-prebuilt-for-windows/downloads/detail?name=zlib-1.2.7-vc11-x64.7z