Windows / Linux 一件编译zlib库

一. 下载zlib库 : http://www.zlib.net

      本文以  zlib-1.2.11.tar.xz  为例

二. 解压文件得到 zlib-1.2.11 文件夹,修改 zlib-1.2.11/CMakeLists.txt 文件,在  set(VERSION "1.2.11") (大约6行)下面添加如下两句:

SET(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../bin)
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../bin)

这两句的租用主要是指定可执行文件和库文件的输出目录,方便查看.

返回上一级,在 zlib-1.2.11 相同目录下新建  build_vs_project.bat  脚本,输入如下内容

echo off
color 0A

set CMAKE=cmake
set BUILD_DIR=vs_project

cd zlib*
set ZLIB_PATH=%cd%
echo %ZLIB_PATH%
cd ..

if not exist %BUILD_DIR% (
    md %BUILD_DIR%
)

cd %BUILD_DIR%

%CMAKE% %ZLIB_PATH% 

pause

运行该脚本会产生一个 vs_project 文件夹,里面包含了一个vs解决方案,这个解决方案就是zlib的源码和一些测试用例,如下图(vs2015):

你可以通过这个解决方案查看zlib源码,也可以编译得到zlib库.但这样需要打开vs,并不方便.下面介绍一键编译的方法.

三.在 zlib-1.2.11 相同目录下新建 onekey_build_vs.bat 脚本,输入以下代码:

echo off
color 0A

set CMAKE=cmake
set BUILD_DIR=vs_build

cd zlib*
set ZLIB_PATH=%cd%
echo %ZLIB_PATH%
cd ..

if not exist %BUILD_DIR% (
    md %BUILD_DIR%
)
cd %BUILD_DIR%

::设置VS工具集,相当于指定VS版本,取决于VS的安装路径
set VS_DEV_CMD="D:Program Files (x86)Microsoft Visual Studio 14.0Common7ToolsVsDevCmd.bat"
call %VS_DEV_CMD%

rem Debug版本
%CMAKE% %ZLIB_PATH% -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Debug
nmake /f Makefile
move ../bin ../vs_bin_debug

rem Release版本
%CMAKE% %ZLIB_PATH% -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release
nmake /f Makefile
move ../bin ../vs_bin_release


pause

运行此脚本,就可以一键生成debug和release两个版本的zlib库,不用打开vs,十分方便.产生的文件分别位于 vs_bin_debug 目录和 vs_bin_release 目录下.

文件如下:

四.有windows版本,当然也有linux版本.如下 onekey_build_linux.sh 

#!/bin/bash

CMAKE='cmake'
BUILD_DIR='linux_build'

cd zlib*
ZLIB_PATH=`pwd`
echo $ZLIB_PATH
cd ..

if [ ! -d $BUILD_DIR ]; then
    mkdir $BUILD_DIR
fi
cd $BUILD_DIR
# Debug 版本
$CMAKE $ZLIB_PATH -DCMAKE_BUILD_TYPE=Debug
make
mv ../bin ../linux_bin_debug

# Release 版本
$CMAKE $ZLIB_PATH -DCMAKE_BUILD_TYPE=Release
make
mv ../bin ../linux_bin_release

 生成的文件分别在: linux_bin_debug 和 linux_bin_release 目录下,如下:

[root@localhost zlib]# ll linux_bin_debug/
total 568
-rwxr-xr-x. 1 root root  28848 Sep 30 03:09 example
-rwxr-xr-x. 1 root root  28896 Sep 30 03:09 example64
  w-r--r--. 1 root root 279722 Sep 30 03:09 libz.a
▽rwxrwxrwx. 1 root root      9 Sep 30 03:09 libz.so -> libz.so.1
lrwxrwxrwx. 1 root root     14 Sep 30 03:09 libz.so.1 -> libz.so.1.2.11
-rwxr-xr-x. 1 root root 191088 Sep 30 03:09 libz.so.1.2.11
-rwxr-xr-x. 1 root root  17712 Sep 30 03:09 minigzip
-rwxr-xr-x. 1 root root  17728 Sep 30 03:09 minigzip64
[root@localhost zlib]# ll linux_bin_release/
total 332
-rwxr-xr-x. 1 root root  18792 Sep 30 03:09 example
-rwxr-xr-x. 1 root root  18840 Sep 30 03:09 example64
-rw-r--r--. 1 root root 147314 Sep 30 03:09 libz.a
lrwxrwxrwx. 1 root root      9 Sep 30 03:09 libz.so -> libz.so.1
lrwxrwxrwx. 1 root root     14 Sep 30 03:09 libz.so.1 -> libz.so.1.2.11
-rwxr-xr-x. 1 root root 117520 Sep 30 03:09 libz.so.1.2.11
-rwxr-xr-x. 1 root root  13872 Sep 30 03:09 minigzip
-rwxr-xr-x. 1 root root  13888 Sep 30 03:09 minigzip64
原文地址:https://www.cnblogs.com/tangxin-blog/p/7647675.html