环境:

  win7_x64旗舰版、VS2015企业版、CMake3.8

一、下载apr相关库

  1.1)expat下载地址:https://github.com/libexpat/libexpat/releases/download/R_2_1_0/expat-2.1.0.tar.gz

  1.2)apr库下载地址:http://mirrors.shu.edu.cn/apache//apr/apr-1.6.3-win32-src.zip (注意不能在github上下载trunk版本,win32条件变量使用有问题,亲测!!!)

  1.3)apr-util库下载地址:http://mirrors.shu.edu.cn/apache//apr/apr-util-1.6.1-win32-src.zip

  解压到指定目录下,最后的目录结构如下

二、编译expat

  2.1)编写构建脚本build_expat_for_vs_2015_x86_debug.bat

@echo off

::VS2015 x86编译环境
call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" x86 ::创建构建目录
if not exist cmake (
mkdir cmake
)
cd cmake ::创建nmake工程
::MSVC=ON 禁止4996警告
::BUILD_tools=OFF 禁止生成BUILD_tools
::BUILD_examples=OFF 禁止生成BUILD_examples
::BUILD_tests=OFF 禁止生成BUILD_tests
::DBUILD_shared=OFF 生成静态库
::CMAKE_BUILD_TYPE=Debug 生成调试信息
cmake -G "NMake Makefiles" -DMSVC=ON -DBUILD_tools=OFF -DBUILD_examples=OFF -DBUILD_tests=OFF -DBUILD_shared=OFF -DCMAKE_BUILD_TYPE=Debug ..
nmake
pause

  2.2)生成expat库

  将build_expat_for_vs_2015_x86_debug.bat文件放到expat-2.1.0目录下,执行脚本生成静态库expat.lib文件。

三、编译apr

  3.1)编写构建脚本build_apr_for_vs_2015_x86_debug.bat

@echo off

::VS2015 x86编译环境
call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" x86 ::创建构建目录
if not exist cmake (
mkdir cmake
)
cd cmake ::创建nmake工程
::APR_INSTALL_PRIVATE_H=OFF 禁止APR_INSTALL_PRIVATE_H
::APR_HAVE_IPV6=OFF 禁止APR_HAVE_IPV6
::INSTALL_PDB=OFF 禁止INSTALL_PDB
::APR_BUILD_TESTAPR=OFF 禁止APR_BUILD_TESTAPR
::TEST_STATIC_LIBS=OFF 禁止TEST_STATIC_LIBS
::CMAKE_BUILD_TYPE=Debug 生成调试版本
cmake -G "NMake Makefiles" -DAPR_INSTALL_PRIVATE_H=OFF -DAPR_HAVE_IPV6=OFF -DINSTALL_PDB=OFF -DAPR_BUILD_TESTAPR=OFF -DTEST_STATIC_LIBS=OFF -DCMAKE_BUILD_TYPE=Debug ..
nmake ::拷贝头文件
copy /y apr.h ../include/ pause

  3.2)生成apr库

  将build_apr_for_vs_2015_x86_debug.bat 文件放到apr-1.6.3目录下,执行脚本生成静态库expat.lib文件。

四、编译apr-util

  4.1)修改CMakeLists.txt文件,添加红色的内容

PROJECT(APR-Util C)

CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

#FIND_PACKAGE(OpenSSL)

#FIND_PACKAGE(expat)
...
SET(install_bin_pdb ${install_bin_pdb} ${PROJECT_BINARY_DIR}/libaprutil-.pdb)
TARGET_LINK_LIBRARIES(libaprutil- ${APR_LIBRARIES} ${XMLLIB_LIBRARIES} ${SYSTEM_LIBRARIES})
SET_TARGET_PROPERTIES(libaprutil- PROPERTIES COMPILE_DEFINITIONS "APU_DECLARE_EXPORT;APR_DECLARE_EXPORT;XML_STATIC;WINNT")
...
SET(install_targets ${install_targets} aprutil-)
TARGET_LINK_LIBRARIES(aprutil- ${APR_LIBRARIES} ${XMLLIB_LIBRARIES} ${SYSTEM_LIBRARIES})
SET_TARGET_PROPERTIES(aprutil- PROPERTIES COMPILE_DEFINITIONS "APU_DECLARE_STATIC;APR_DECLARE_STATIC;APU_DSO_MODULE_BUILD;XML_STATIC")

  4.2)编写构建脚本build_aprutil_for_vs_2015_x86_debug.bat

@echo off

::VS2015 x86编译环境
call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" x86 set CURRENT_DIR=%~dp0
::设置APR头文件目录
set APR_INCLUDE_DIR=%CURRENT_DIR%../apr-1.6./include
::设置APR库文件
set APR_LIBRARIES=%CURRENT_DIR%../apr-1.6./cmake/apr-.lib
::设置EXPAT头文件目录
set EXPAT_INCLUDE_DIRS=%CURRENT_DIR%../expat-2.1./lib
::设置EXPAT库文件
set EXPAT_LIBRARIES=%CURRENT_DIR%../expat-2.1./cmake/expat.lib
::设置window系统库文件
set SYSTEM_LIBRARIES="ws2_32.lib mswsock.lib rpcrt4.lib" ::创建构建目录
if not exist cmake (
mkdir cmake
)
cd cmake ::创建nmake工程
::MSVC=ON 禁止4996警告
::APU_HAVE_CRYPTO=OFF 禁止APU_HAVE_CRYPTO
::APU_HAVE_ODBC=OFF 禁止APU_HAVE_ODBC
::APU_HAVE_ODBC=OFF 禁止APU_HAVE_ODBC
::APR_HAS_LDAP=OFF 禁止APR_HAS_LDAP
::INSTALL_PDB=OFF 禁止INSTALL_PDB
::APR_BUILD_TESTAPR=OFF 禁止APR_BUILD_TESTAPR
::TEST_STATIC_LIBS=OFF 禁止TEST_STATIC_LIBS
::APR_INCLUDE_DIR=ON 启用EXPAT_FOUND
::APR_INCLUDE_DIR=%APR_INCLUDE_DIR% 设置APR头文件目录
::APR_LIBRARIES=%APR_LIBRARIES% 设置APR库文件
::EXPAT_INCLUDE_DIRS=%EXPAT_INCLUDE_DIRS% 设置EXPAT头文件目录
::EXPAT_LIBRARIES=%EXPAT_LIBRARIES% 设置EXPAT库文件
::SYSTEM_LIBRARIES=%SYSTEM_LIBRARIES% 设置window系统库文件
::CMAKE_BUILD_TYPE=Debug 生成调试版本
cmake -G "NMake Makefiles" -DAPU_HAVE_CRYPTO=OFF -DAPU_HAVE_ODBC=OFF -DAPR_HAS_LDAP=OFF -DINSTALL_PDB=OFF -DAPR_BUILD_TESTAPR=OFF -DTEST_STATIC_LIBS=OFF -DEXPAT_FOUND=ON -DAPR_INCLUDE_DIR=%APR_INCLUDE_DIR% -DAPR_LIBRARIES=%APR_LIBRARIES% -DEXPAT_INCLUDE_DIRS=%EXPAT_INCLUDE_DIRS% -DEXPAT_LIBRARIES=%EXPAT_LIBRARIES% -DSYSTEM_LIBRARIES=%SYSTEM_LIBRARIES% -DCMAKE_BUILD_TYPE=Debug ..
nmake
pause

  4.3)生成aprutil库

  将build_aprutil_for_vs_2015_x86_debug.bat 文件放到apr-util-1.6.1目录下,执行脚本生成静态库aprutil-1.lib和动态库libaprutil-1.lib、libaprutil-1.dll文件。

在windows上编译apr库的更多相关文章

  1. windows上编译boost库

    要用xx库,编译boost时就指定--with-xx.例如: # 下载并解压boost_1.58 # 进入boost_1.58目录 bjam.exe toolset=msvc-14.0 --build ...

  2. [ZZ] 在windows上编译Mesa3d opengl32库

    在windows上编译Mesa3d opengl32库 cheungmine http://blog.csdn.net/ubuntu64fan/article/details/8061475 Mesa ...

  3. 利用openssl管理证书及SSL编程第2部分:在Windows上编译 openssl

    利用openssl管理证书及SSL编程第2部分:在Windows上编译 openssl 首先mingw的环境搭建,务必遵循下文: http://blog.csdn.net/ubuntu64fan/ar ...

  4. 在windows上编译wireshark源代码

    终于在windows上成功编译了wireshark源代码,个中酸辛,都是泪..只能说要多试! windows上编译wireshark共用到三个东西:wireshark源代码.python.cygwin ...

  5. 在Mac/Linux/Windows上编译corefx遇到的问题及解决方法

    这两天尝试在Mac/Linux/Windows三大平台上编译.NET跨平台三驾马车(coreclr/corefx/dnx)之一的corefx(.NET Core Framework),结果三个平台的编 ...

  6. 在windows 上编译部署Rap2

    在windows 上编译部署Rap2 引言 安装需要的环境 安装后端站点 创建数据库 在全局安装pm2 和 typescript 配置mysql,redis 数据库链接配置 初始化 编译 初始化数据库 ...

  7. 如何在 Windows上编译Objective-C

    Objective-C现在几乎已经变成了苹果的专利了,可以直接在苹果的Xcode上编译Objective-C程序,但是在Windows平台下的编译工具就寥寥无几了,本身这种语言用的人就不是很多.今天在 ...

  8. 在windows上编译MatConvNet

    有个BT的要求,在windows上使用MatConvNet,并且需要支持GPU. 费了些力气,记录一下过程(暂不支持vl_imreadjpeg函数) 在这里下载MatConvNet,机器配置vs201 ...

  9. IOS上编译boost库

    环境:xcode9mac os 10.13 1.下载boost库并解压2.cd到解压后的文件包内,执行 sh bootstrap.sh(解压后会得到这个脚本文件).3.执行./b2 编译整个库.4.经 ...

随机推荐

  1. iOS 判断一个类是否存在,NSStringFromClass 不用 import 就可以获取类

    Class myCls = NSClassFromString(@"Person"); NSString *str = NSStringFromClass(myCls); if ( ...

  2. 递归----Python

    #递归不仅仅是学习python中会遇到的一些问题,在学习每一个语言的过程中都会遇到递归.使用递归可以让复杂的循环变得简单. 递归:程序调用自身的行为 1.写一个数的阶乘 #递归 def factor( ...

  3. Problem 9: Special Pythagorean triplet

    flag = 0 for a in range(1,1000): for b in range(a+1,1000): if a*a + b*b == (1000-a-b)**2: print(a,b) ...

  4. python复习购物车程序

    个人学习总结: 无他,唯手熟尔!多敲多练才是王道 python 第三课 元组的灵活运用&字符串的诸多操作 Program01 '''时间 2018年2月12日12:15:28目的 购物车程序 ...

  5. SharePoint Framework 在web部件中使用已存在的JavaScript库 - 捆绑打包和外部引用

    博客地址:http://blog.csdn.net/FoxDave 在构建SPFx客户端web部件时,你可以使用公网已有的JavaScript库来构建强大的解决方案.但是在使用的时候你需要考虑你引用的 ...

  6. vue项目中,使用vue-awesome-swiper插件实现轮播图

    一.安装 npm install vue-awesome-swiper 二.项目中引入 import 'swiper/dist/css/swiper.css'import {swiper,swiper ...

  7. js中级

    闭包:函数在调用的时候,会形成一个私有作用域,内部的变量不会被访问, 这种保护机制叫闭包.这就意味着函数调用完毕,这个函数形成的栈内存会被销毁. 重点 函数归属谁跟他在哪调用没有关系,跟在哪定义有关. ...

  8. 制作voc2007数据格式的数据集

    最近按照博主分享的流程操作,将自己遇到的难题记录下来,附上原博文链接:https://blog.csdn.net/jx232515/article/details/78680724 使用SSD训练自己 ...

  9. php优秀框架codeigniter学习系列——CI_Controller分析

    该类是一个超级大的父类,它将在 CodeIgniter.php 中实例化化过的类,通通加载成它的类成员变量,所以可以方便的进行各种操作.各种应用控制器类,都会继承 CI_Controller 类. _ ...

  10. RabbitMQ中,exchange1绑定exchange2,exchange1和exchange2都绑定queue1,此时消息发送给exchange1,queue1中有几条消息

    如题: 存在两个交换器 exchange1,exchange2 存在一个队列 queue1 存在三个绑定关系:exchange1绑定exchange2 ,exchange1绑定queue1,excha ...