在windows上编译apr库
环境:
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库的更多相关文章
- windows上编译boost库
要用xx库,编译boost时就指定--with-xx.例如: # 下载并解压boost_1.58 # 进入boost_1.58目录 bjam.exe toolset=msvc-14.0 --build ...
- [ZZ] 在windows上编译Mesa3d opengl32库
在windows上编译Mesa3d opengl32库 cheungmine http://blog.csdn.net/ubuntu64fan/article/details/8061475 Mesa ...
- 利用openssl管理证书及SSL编程第2部分:在Windows上编译 openssl
利用openssl管理证书及SSL编程第2部分:在Windows上编译 openssl 首先mingw的环境搭建,务必遵循下文: http://blog.csdn.net/ubuntu64fan/ar ...
- 在windows上编译wireshark源代码
终于在windows上成功编译了wireshark源代码,个中酸辛,都是泪..只能说要多试! windows上编译wireshark共用到三个东西:wireshark源代码.python.cygwin ...
- 在Mac/Linux/Windows上编译corefx遇到的问题及解决方法
这两天尝试在Mac/Linux/Windows三大平台上编译.NET跨平台三驾马车(coreclr/corefx/dnx)之一的corefx(.NET Core Framework),结果三个平台的编 ...
- 在windows 上编译部署Rap2
在windows 上编译部署Rap2 引言 安装需要的环境 安装后端站点 创建数据库 在全局安装pm2 和 typescript 配置mysql,redis 数据库链接配置 初始化 编译 初始化数据库 ...
- 如何在 Windows上编译Objective-C
Objective-C现在几乎已经变成了苹果的专利了,可以直接在苹果的Xcode上编译Objective-C程序,但是在Windows平台下的编译工具就寥寥无几了,本身这种语言用的人就不是很多.今天在 ...
- 在windows上编译MatConvNet
有个BT的要求,在windows上使用MatConvNet,并且需要支持GPU. 费了些力气,记录一下过程(暂不支持vl_imreadjpeg函数) 在这里下载MatConvNet,机器配置vs201 ...
- IOS上编译boost库
环境:xcode9mac os 10.13 1.下载boost库并解压2.cd到解压后的文件包内,执行 sh bootstrap.sh(解压后会得到这个脚本文件).3.执行./b2 编译整个库.4.经 ...
随机推荐
- Python36 二进制文件读写问题
在Python36中写如下代码: __author__ = '-------'#-*- coding: utf-8 -*-import struct fo = open("myfile.tx ...
- .NET MVC+angular导入导出
cshtml: <form class="form-horizontal" id="form1" role="form" ng-sub ...
- MVP 实践
今天有时间看了看google的官方文档,下载todo源码,仔细研读了一下,觉得其思想对开发还是有很大帮助的.个人认为,MVP通过Activity与业务逻辑的解耦,其作为Controller的职责更加单 ...
- hadoop题目(一)
一.简要描述如何安装配置一个开源hadoop,只描述即可,列出完整步骤. 答:①创建一个用户和用户组,用来管理hadoop项目: ②修改确定IP地址:vim /etc/sysconfig/netw ...
- vue-cli 项目里屏幕自适应
很多同学可能在写h5的时候,也会遇到移动端如何控制屏幕自适应问题!在移动端网页开发中,我们可以用手机淘宝的flexible.那么在vue当中,也同样可以用!接下来就介绍下如何在vue-cli配置的项目 ...
- .Net Core+Angular6 学习 第一部分(创建web api)
. 创建.net core web api 1.1 选择一个empty 模式,里面只有简单的2个class 1.2 配置web api 的路由. 1.2.1 打开Startup.cs,首先引用conf ...
- python基础—字符串的常用函数“”
#字符串常用语法name = "wang yan li"print(name.capitalize())#首字母大写print(name.count("n")) ...
- js 小数取整数
1.丢弃小数部分,保留整数部分 parseInt() 22.127456取成22.13 parseInt(5/2) 2 向上取整,有小数就整数部分加1 Math.ceil(5/2) 3,四舍五入 ...
- SpringBoot+POI报表批量导出
由于servletResponse 获取的输出流对象在一次请求中只能输出一次,所以要想实现批量导出报表,需要将excel文件打包成zip格式然后输出. 好了,废话不多说,上代码. 1. 首先,需要导入 ...
- Android连接服务器端的Socket
package com.example.esp8266; import java.io.IOException;import java.io.InputStream;import java.io.Ou ...