在windows上编译apr库apr-util库

环境:

  win10、VS2015企业版、CMake3.18.2

一、下载apr相关库

  1.1)expat:expat-2.1.0.tar.gz

  1.2)apr库:apr-1.6.3.zip

  1.3)apr-util库: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

说明:如果拷贝失败,手动拷贝。从make文件夹拷到include文件夹。

  3.2)生成apr库

  将build_apr_for_vs_2015_x86_debug.bat 文件放到apr-1.6.3目录下,执行脚本生成静态库apr-1.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-1.pdb)
TARGET_LINK_LIBRARIES(libaprutil-1 ${APR_LIBRARIES} ${XMLLIB_LIBRARIES} ${SYSTEM_LIBRARIES})
SET_TARGET_PROPERTIES(libaprutil-1 PROPERTIES COMPILE_DEFINITIONS "APU_DECLARE_EXPORT;APR_DECLARE_EXPORT;XML_STATIC;WINNT")
...
SET(install_targets ${install_targets} aprutil-1)
TARGET_LINK_LIBRARIES(aprutil-1 ${APR_LIBRARIES} ${XMLLIB_LIBRARIES} ${SYSTEM_LIBRARIES})
SET_TARGET_PROPERTIES(aprutil-1 PROPERTIES COMPILE_DEFINITIONS "APU_DECLARE_STATIC;APR_DECLARE_STATIC;APU_DSO_MODULE_BUILD;XML_STATIC")

说明:增加两个${SYSTEM_LIBRARIES}

去掉 #FIND_PACKAGE(OpenSSL) #FIND_PACKAGE(expat) 加#

  4.2)编写构建脚本build_aprutil_for_vs_2015_x86_debug.bat

@echo off::VS2015 x86编译环境
call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" x86set CURRENT_DIR=%~dp0
::设置APR头文件目录
set APR_INCLUDE_DIR=%CURRENT_DIR%apr-1.6.3\include
::设置APR库文件
set APR_LIBRARIES=%CURRENT_DIR%apr-1.6.3\cmake\apr-1.lib
::设置EXPAT头文件目录
set EXPAT_INCLUDE_DIRS=%CURRENT_DIR%../expat-2.1.0/lib
::设置EXPAT库文件
set EXPAT_LIBRARIES=%CURRENT_DIR%../expat-2.1.0/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库apr-util库相关推荐

  1. 手把手教你用delphi 10.2.3 在windows上编译Centos 7下的命令行程序,适合中小学生

    手把手教你用delphi 10.2.3 在windows上编译Centos 7下的命令行程序,适合中小学生 1.下载并安装     a)下载:delphicbuilder10_2_3_2631.iso ...

  2. 在Windows上编译FreeRDP

    在Windows上编译FreeRDP FreeRDP是RDP协议的一个开源实现,像mstsc远程桌面也是RDP协议的一个实现微软把它预装在Windows系统中.今天我们就讲下如何在Windows下编译 ...

  3. 手把手教你在Windows上编译Swift工具链

    2020/5/27更新:大家现在可以直接从Saleem Abdulrasool的Azure Pipeline中下载打包好的Swift Windows SDK了,在他的GitHub中找到swift-bu ...

  4. php在windows编译_在Windows上编译PHP

    php在windows编译 Compiling PHP from source code is more commonly done on Unix-type systems. Those worki ...

  5. Windows上编译libpng

    Windows上编译libpng 下载libpng 1.5.10并解压到[工作目录]/png/libpng-1.5.10 用CMake选择png/libpng-1.5.10目录并Configure: ...

  6. Windows上编译OpenEXR

    Windows上编译OpenEXR 注意一定要使用1.0.1版本的ilmbase和1.6.1版本的openexr,其它版本的我测试过,OpenImageIO会编译失败. 解压ilmbase 1.0.1 ...

  7. windows上编译安装pytorch的c++扩展

    环境描述 window10 python3.6.8 [MSC v.1916 64 bit (AMD64)] pytorch 1.10.0+cu113 cuda版本 11.1 使用mingw32编译 编 ...

  8. Windows上编译github源码方式运行Node-RED,以及离线迁移安装Node-RED

    场景 Node-RED简介与Windows上安装.启动和运行示例: Node-RED简介与Windows上安装.启动和运行示例_BADAO_LIUMANG_QIZHI的博客-CSDN博客 上面是在Wi ...

  9. windows上编译zlib-1.2.8

    MSVC编译 使用VS(x86)命令行工具进入到zlib根目录,执行 nmake -f win32/Makefile.msc ,在根目录下生成:zlib.lib(静态库)  zdll.lib(动态库的 ...

最新文章

  1. python打开网页存图_python 获取网页图片 保存在本地
  2. drupal7 php版本,让Drupal7识别您的模块
  3. dsp-asic-fpga
  4. 皮一皮:王大爷尽说些大实话...
  5. Makefile经典教程
  6. opengl 教程(21) 聚光灯
  7. 设计模式六大原则(5)——迪米特原则
  8. 数据库计算机报告,外文数据库计算机检索报告实例.pdf
  9. 41状态模式(State Pattern)
  10. 你和文字,陪我行走岁月
  11. GTUG的推荐给大家的一本书
  12. Java取邮箱名_邮件开发 中的邮箱地址提取!
  13. java 答题卡_·(B卷)Java期末试卷及答题卡(2005-2006第二学期).doc
  14. 万字讲解WiFi为何物
  15. 基于Cocos2d-x游戏引擎实战开发超人
  16. 基于KEIL RTX CMSIS-RTOS在STM32单片机上的一些使用心得
  17. js获取图片点坐标值
  18. 合成孔径雷达原理-绪论
  19. 【python-sklearn】中文文本处理LDA主题模型分析
  20. Duolingo推出聊天学习机器人 让你免费学英语

热门文章

  1. Android 开发多摄像头 API
  2. 可以计算亲戚关系的超级计算器!
  3. 思途旅游CMS短信宝短信插件
  4. 基于8086的家庭安全防盗系统proteus制作
  5. 桌面一片空白(不显示图标)的盗号木马清除指南
  6. 测试 必用 工具(测试工具知多少)
  7. 【线程知识点】-- 自旋锁
  8. HDMI端口辐射(EMI)超标解决方案
  9. Ocean Chain: 海洋渔业的价值连接器?
  10. lingo标准模型与编程(附习题、代码)