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 兩個組態砍掉因為用不到。

再按一次Configure
再按一次Generate

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


MD x64 Static:
libzlib-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

讓地獄深紅的天亮 發表在 痞客邦 PIXNET 留言(0) 人氣()