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

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

二. 解压文件得到 zlib-1.2. 文件夹,修改 zlib-1.2./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. 相同目录下新建  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.0\Common7\Tools\VsDevCmd.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
-rwxr-xr-x. root root Sep : example
-rwxr-xr-x. root root Sep : example64
w-r--r--. root root Sep : libz.a
▽rwxrwxrwx. root root Sep : libz.so -> libz.so.
lrwxrwxrwx. root root Sep : libz.so. -> libz.so.1.2.
-rwxr-xr-x. root root Sep : libz.so.1.2.
-rwxr-xr-x. root root Sep : minigzip
-rwxr-xr-x. root root Sep : minigzip64
[root@localhost zlib]# ll linux_bin_release/
total
-rwxr-xr-x. root root Sep : example
-rwxr-xr-x. root root Sep : example64
-rw-r--r--. root root Sep : libz.a
lrwxrwxrwx. root root Sep : libz.so -> libz.so.
lrwxrwxrwx. root root Sep : libz.so. -> libz.so.1.2.
-rwxr-xr-x. root root Sep : libz.so.1.2.
-rwxr-xr-x. root root Sep : minigzip
-rwxr-xr-x. root root Sep : minigzip64

最新文章

  1. 2016 Multi-University Training Contests
  2. Qt学习1
  3. system执行shell命令
  4. 无责任Windows Azure SDK .NET开发入门篇三[使用Azure AD 管理用户信息--3.1 Index用户列表]
  5. PHP前端$.ajax传递数据到后台
  6. 3篇OAuth的文章
  7. JavaBean-- 保存 范围
  8. ABP Zero源码
  9. Spring Hiernate整合
  10. Android shared_preference操作
  11. 如果固定电脑ip地址
  12. BZOJ 1257 - 余数之和 - [CQOI2007]
  13. [转载]URI、 URL 和 URN 的区别
  14. vb.net 與 SQLite連線
  15. .net运行时dll的查找路径顺序
  16. python基础之 序列 pickle&json
  17. PostMessage实现多窗口之间的数据传递
  18. JS中一些常用的事件(笔记)
  19. sql server2008安装时提示重启计算机失败怎么办?
  20. windows环境安装tensorflow

热门文章

  1. tips 前端 各个设备的页面尺寸的media query 与页面高度的经验总结
  2. 洛谷T8115 毁灭
  3. webservice soapheader验证方法
  4. C#操作windows事件日志项
  5. C#设计模式学习笔记-单例模式(转)
  6. 基于最新友盟开发文档,集成友盟分享功能,赋demo
  7. POJ 3041.Asteroids-Hungary(匈牙利算法)
  8. 洛谷 P1064 金明的预算方案【DP/01背包-方案数】
  9. Lightoj 1348 Aladdin and the Return Journey (树链剖分)(线段树单点修改区间求和)
  10. mysql语法语句