如何编译POCO
Poco C++库是:
- 一系列C++类库,类似Java类库,.Net框架,Apple的Cocoa;
- 侧重于互联网时代的网络应用程序
- 使用高效的,现代的标准ANSI/ISO C++,并基于STL
- 高可移值性,并可在多个平台下可用
- 开源,并使用Boost Software License发布
- 不管是否商用,都完全免费
Poco库概览

特性:
- DynamicAny与Any类
- Cache框架
- 基于OpenSSL的密码系统
- 日期,时间类库
- 事件和通知框架
- FTP客户端
- 跨平台的文件系统类库
- HTML表单类库
- HTTP客户端和服务端(支持SSL),C++ 服务器页面编译器
- 日志框架
- 多线程框架(线程池,活动对象,工作队列等)
- POP3客户端类库
- 跨平台,一次编写,多平台编译和运行
- 进程管理和进程间通信类库
- 反射框架
- 基于PCRE的正则表达式
- SMTP客户端类库
- 数据库访问类库(SQLite,MySQL, ODBC)
- 支持SSL/TLS,基于OpenSSL
- 动态类库加载
- 先进的内存和指针管理(Buffer, Pool)
- Socket类库
- 网络数据流类库,支持Base64,HexBinary编解码,压缩等等
- 字符串格式化和其它字符串工具类库
- TCP服务器框架(多线程)
- 文本编码和转换
- Tuples
- URI支持
- 支持UTF8和Unicode编码
- UUID生成器
- XML生成和解析器
- Zip文件操作类库
Poco的使命
- Poco是一个强大的类库,并易于构建自己的应用程序
- Poco帮助你创建跨平台的应用程序(一次编写,多平台编译和运行)
- 模块化和可扩展,可应用于嵌入式到企业级程序
- 提供全面,易懂的编程接口
- 使用C++语言,快速且高效
- Poco崇尚简易
- 在设计,代码风格和文档上保持一致
- Poco强调代码质量,包括可读性,综合性,一致性,编码风格和可测试性
- Poco使得C++编程更加容易
指导方针
- 高度关注代码质量,编码风格,一致性,可读性
- 高度关注测试
- 注重实用性
- 基于现有的,可靠的组件开发
版本历史
- Summer 2004: Günter Obiltschnig started development
- February 2005: First release on SourceForge
- (Release 0.91 under Sleepycat license)
- May 2005: First contributions by Aleksandar Fabijanic
- January 2006: Release 1.0
- March 2006: Release 1.1
- July 2006: Moved to Boost license, POCO Community Website
- August 2006: Release 1.2
- May 2007: Release 1.3
- July 2010: Stable Release 1.3.7,
- about 20 contributors, used in 100s of projects
支持平台
- Microsoft Windows
- Linux
- Mac OS X
- HP-UX, Solaris, AIX*
- Embedded Linux (uClibc, glibc)
- iOS
- Windows Embedded CE
- QNX
Poco应用场景
- 创建自动化的中间件和设备
- 工业自动化和工业设备
- 流量控制系统
- 健康系统
- 测量,数据收集和测试系统
- 消费电子产品和家庭自动化产品
- 测量
- 航空交通管理系统
- VoIP
- 票务和入口控制系统
- 包装应用程序
Poco的优势
- 全面的,完整的C++框架,可减少开发工作,快速让产品走向市场
- 易学易使用,以及相当多的示例代码和良好的文档
- 原生的C++代码,性能优秀,低内存占用
- 平台无关,一处编写,跨平台编译和运行
- 大多数情况下,可以开发机上完成开发和调试工作
- 可以非常容易的迁移到新平台
编译
下面简单介绍一下方法,以 vs2010 为例。
第一种方法:
(1) Poco 根目录下有build_vs100.cmd和buildwin.cmd这两个批处理文件, 我们得修改一下它们。
把build_vs100.cmd 修改为以下内容:
@echo off
if defined VS100COMNTOOLS (
call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\vsvars64.bat")
buildwin 100 build all both x64 samples
红色的部分是vsvars64.bat的路径,具体要看本机的安装位置。这里因为是要编译X64,所以要修改环境。
蓝色部分是执行编译时候的参数(注意X64的X要小写)。参数的具体说明为:
buildwin VS_VERSION [ACTION] [LINKMODE] [CONFIGURATION] [PLATFORM] [SAMPLES] [TESTS] [TOOL]
VS_VERSION: 71|80|90|100|110
ACTION: build|rebuild|clean
LINKMODE: static_mt|static_md|shared|all
CONFIGURATION: release|debug|both
PLATFORM: Win32|x64|WinCE
SAMPLES: samples|nosamples
TESTS: tests|notests
TOOL: devenv|vcexpress|msbuild
具体的参数选择根据需求。
如果不需要 NetSSL_OpenSSL 和 MySQL ,此时保存后就双击它就行了。 它会自动编译好各种库。
如果要NetSSL_OpenSSL 这个库则打开buildwin.cmd文件:
设置 openssl 的路径,如:
set OPENSSL_DIR=c:\OpenSSL-Win64
set OPENSSL_INCLUDE=%OPENSSL_DIR%\include
set OPENSSL_LIB=%OPENSSL_DIR%\lib;%OPENSSL_DIR%\lib\VC
set INCLUDE=%INCLUDE%;%OPENSSL_INCLUDE%
set LIB=%LIB%;%OPENSSL_LIB%
注意,如果要 Poco 中的 MySQL 库 还得安装. Mysql
编辑好后,双击 build_vs100.cmd执行编译。完成后会在Poco根目录下的lib64中看到编译好的库。在bin64中有编译好的dll。
第二种方法(适合熟悉命令行的用户):
按需求修改完buildwin.cmd文件后,使用vs2010的Tools中“Visual Studio x64 Win64 命令提示(2010)”命令,进入命令行状态。转到Poco所在的根目录,直接输入命令:
buildwin 100 build all both x64 samples
最后需要注意的地方:
上述方法完成编译后,关于Data的MySQL、ODBC、SQLite三个库没有生成(原因不详),需要单独编译,在此以MySQL为例记录一下编译过程。在\Data\MySQL文件夹下,找到MySQL_vs100.sln文件,打开。
打开的工程是win32的,需要改为X64。在C++包含目录中添加本项目的include文件夹,例如:“C:\poco-1.5.1-all\Data\MySQL\include;”,还要添加安装的MySQL的include文件夹,例如“C:\Program Files\MySQL\MySQL Server 5.6\include”,在库目录中添加所需库的路径,例如“C:\Program Files\MySQL\MySQL Server 5.6\lib”。
注意:编译MySQL的Poco库,必须先安装MySQL。
设置好环境之后,就可以选择相应的配置(debug or release)进行编译。
编译完成后,生成的库在Poco根目录下的lib文件夹,如果是编译的动态库,则动态库在Poco根目录下的bin文件夹。
如何编译POCO的更多相关文章
- iOS——为Xcode编译POCO C++静态库
一.POCO C++ library简介 POCO C++ library是一个C++编写的跨平台库,主要实现网络连接.数据库管理以及服务器,适用于跨平台.嵌入式. 二.为Xcode编译POCO C+ ...
- 从零开始编译Poco C++和VS2015环境配置
Poco C++是一个C++的开源框架,详细介绍可以问百度介绍更详细,这里我就记录下我从零编译poco-1.9.0和配置 VS2015的环境,以备不时之需. 步骤:一.安装cmake: 二.编译poc ...
- Ubuntu下编译Poco库
本文主要记录下Ubuntu下编译Poco C++库的配置项以备后用.系统版本:Ubuntu 16.04,1 Poco 版本:1.9.0基本的步骤如下: 1.从官网下载最新的Poco源码,地址是:htt ...
- 最近编译POCO 库和 Boost库的笔记
最近在编译POCO库和BOOST库 先讲一下编译POCO库,我编译的是1.9.0,过程相当曲折,要OPENSSL修改版本的,个OPENSSL在这里下载,如果你用一般未修改的OPENSSL 是编译不了, ...
- Ubuntu 20.04 安装和编译poco 1.10.1
1.首先安装其openssl其它依赖库,打开终端,使用root账户(sudo su),完成以下库的安装 //安装odbc相关库 apt-get install unixodbc apt-get ins ...
- Ubuntu 16.04上源码编译Poco并编写cmake文件 | guide to compile and install poco cpp library on ubuntu 16.04
本文首发于个人博客https://kezunlin.me/post/281dd8cd/,欢迎阅读! guide to compile and install poco cpp library on u ...
- Windows 10上源码编译Poco并编写httpserver和tcpserver | compile and install poco cpp library on windows
本文首发于个人博客https://kezunlin.me/post/9587bb47/,欢迎阅读! compile and install poco cpp library on windows Se ...
- linux 下cmake 编译 ,调用,调试 poco 1.6.0 小记
上篇文章 小记了: 关于 Poco::TCPServer框架 (windows 下使用的是 select模型) 学习笔记. http://www.cnblogs.com/bleachli/p/4352 ...
- c++ poco StreamSocket tcpclient测试用例
1.代码 #include <iostream> #include "Poco/Net/Socket.h" #include "Poco/Net/Stream ...
随机推荐
- 基于I2C EPPRPM(AT24C02B) + LCD12864实验
本次实验目的:在指定的EPPROM地址中,写入一数据,延时100MS后,在从该地址中读取,并在LCD上显示. 该实验在前两天就开始做了,一开始并没有成功,读出的一直0x00,当时也调了一会,但跳回到P ...
- 基于Verilog HDL 的数字电压表设计
本次实验是在“基于Verilog HDL的ADC0809CCN数据采样”实验上进一步改进,利用ADC0809采集到的8位数据,进行BCD编码,以供查表方式相加进行显示,本次实验用三位数码管. ADC0 ...
- WEB在线预览PDF
这是我在博客园发表的第一篇文章.以后会陆续把在线预览其他格式文档的解决方案发表出来. 解决思路:把pdf转换成html显示. 在线预览pdf我暂时了解3种解决方案,欢迎大家补充. 方案一: 利用pdf ...
- 什么是j2ee ??EJB与j2ee的关系?? 请看百度百科
首先,EJB是j2ee的一部分. http://baike.baidu.com/link?url=SGmNOVWoaZ62WCjb7a_yzz-GBGsDT3jyFM1hsvv8ycAwusdmo_D ...
- 如何使用XE2及更高版本中提供的自定义皮肤(样式)功能
源:如何使用XE2及更高版本中提供的自定义皮肤(样式)功能 1. 制作样式文件: 点击 XE2+ 的 IDE 菜单上的 Tools-->Bitmap Style Designer, 打开设计器. ...
- unity3d 之本地推送
1. 本地推送主要包括在android和ios上,下面所有的代码都是本人写的,经过测试是没有问题的,已经运用到项目中了.首先是接口INotification: using System; public ...
- CentOS x 64 MooseFS 学习
一.MFS 简介.... MooseFS(Moose File System,mfs)是一种分布式文件系统,它将数据分布在网络中的 不同服务器上,支持FUSE,客户端可以作为一个 普通的Unix 文件 ...
- 修改Linux系统语言
====[root@lichao520 yum.repos.d]# localeLANG=en_US.UTF-8LC_CTYPE="en_US.UTF-8"LC_NUMERIC=& ...
- 在win10环境下安装eclipse mars版本
1下载eclipse软件.下载地址:http://www.eclipse.org/downloads/ 不要下载.exe文件.直接下载安装包,下载对应的安装包,我下载的是这个Eclipse IDE f ...
- 20、手把手教你Extjs5(二十)模块Grid的多列表方案
对于有很多字段的模块在一个grid中显示所有的字段,会显得很臃肿,对于不同的用户其侧重的字段类型也不尽相同,因此就有必要为Grid的列表设计多个方案.在这个自定义系统进行设计的时候,我已经将这部分内容 ...