Skip to content
The POCO C++ Libraries are powerful cross-platform C++ libraries for building network- and internet-based applications that run on desktop, server, mobile, IoT, and embedded systems.
C C++ CMake JavaScript Makefile Objective-C Other
Branch: master
Clone or download

Latest commit

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
ApacheConnector make CMake files style (more) consistent Feb 14, 2020
CppParser make CMake files style (more) consistent Feb 14, 2020
CppUnit make CMake files style (more) consistent Feb 14, 2020
Crypto make CMake files style (more) consistent Feb 14, 2020
Data make CMake files style (more) consistent Feb 14, 2020
Encodings make CMake files style (more) consistent Feb 14, 2020
Foundation #2922: 1.10 cmake build fails on FreeBSD 11.2 Release Feb 16, 2020
JSON make CMake files style (more) consistent Feb 14, 2020
JWT make CMake files style (more) consistent Feb 14, 2020
MongoDB make CMake files style (more) consistent Feb 14, 2020
Net make CMake files style (more) consistent Feb 14, 2020
NetSSL_OpenSSL use TLS_CLIENT_USE instead of CLIENT_USE Feb 16, 2020
NetSSL_Win make CMake files style (more) consistent Feb 14, 2020
PDF make CMake files style (more) consistent Feb 14, 2020
PageCompiler make CMake files style (more) consistent Feb 14, 2020
PocoDoc make CMake files style (more) consistent Feb 14, 2020
ProGen fix project.targetArchitecture for x64 Jan 13, 2020
Redis make CMake files style (more) consistent Feb 14, 2020
SevenZip make CMake files style (more) consistent Feb 14, 2020
Util fixed a warning Feb 14, 2020
XML make CMake files style (more) consistent Feb 14, 2020
Zip make CMake files style (more) consistent Feb 14, 2020
appveyor Use develop branch syntax May 28, 2018
build FreeBSD build config now uses clang Feb 16, 2020
cmake remove ENABLE_MSVC_MP cmake option Feb 17, 2020
contrib Moved contributed CMake modules to "cmake" folder Dec 16, 2012
doc updated changelog Feb 16, 2020
packaging Move include to runtime. Add PostgreSQL includes Oct 24, 2018
patches/AIX new trunk (base for 1.5) Apr 23, 2012
release remove WinTestRunner Jan 27, 2020
travis fix travis builds Feb 8, 2020
.gitattributes Merge .gitattributes changes from develop branch Nov 11, 2012
.gitignore re-generated project files Jan 11, 2020
.gitmodules remove openssl submodule Jan 12, 2020
.travis.yml skip more libs on arm build to stay under 50min limit Feb 14, 2020
CHANGELOG updated changelog Feb 16, 2020
CMakeLists.txt remove ENABLE_MSVC_MP cmake option Feb 17, 2020
CODE_OF_CONDUCT.md add CODE_OF_CONDUCT.md Feb 9, 2018
CONTRIBUTING.md updated contribution guidelines Jan 12, 2020
CONTRIBUTORS unescape Backslash char in UTF8 unescape method Dec 16, 2019
DLLVersion.rc bump version to 1.10.1 Feb 4, 2020
LICENSE LICENSE: add info about SPDX-License-Identifier usage and use it May 14, 2014
Makefile fix Makefile for JWT Jan 22, 2020
NEWS Remove \$Id`$ headers Sep 9, 2017
README updated README Jan 27, 2020
README.md updated README.md links for master branch Jan 27, 2020
VERSION bump version to 1.10.1 Feb 4, 2020
appveyor.yml disable failing projects in appveyor build Feb 4, 2020
build_cmake.cmd Cleanup cmake build system to use transitive dependency management fr… Jun 3, 2018
build_cmake.sh Cleanup cmake build system to use transitive dependency management fr… Jun 3, 2018
build_vs140.cmd Use defaulted 'msbuild' tool Jun 1, 2018
build_vs150.cmd Use defaulted 'msbuild' tool Jun 1, 2018
build_vs160.cmd add build_vs160.cmd Jan 12, 2020
buildwin.cmd build fixes Jan 11, 2020
buildwin.ps1 Fix GH ##2742 Jul 16, 2019
components Reset Components Nov 18, 2019
configure remove duplicate files and remaining Id headers Nov 10, 2017
cppignore.lnx ignore another test Feb 9, 2020
cppignore.win Add HTTPSClientSessionTest::.testCachedSession Jan 21, 2020
env.bat Setup POCO_BASE on Windows Jun 20, 2018
env.sh re-added MongoDB, improved buildwin and release scripts Jul 23, 2013
libversion bump version to 1.10.1 Feb 4, 2020

README.md

alt text

Travis Build Status Build status CII Best Practices

POCO (Portable Components) C++ Libraries are:

  • A collection of C++ class libraries, conceptually similar to the Java Class Library or the .NET Framework.
  • Focused on solutions to frequently-encountered practical problems.
  • Focused on "internet-age" network-centric applications.
  • Written in efficient, modern, 100% ANSI/ISO Standard C++.
  • Based on and complementing the C++ Standard Library/STL.
  • Highly portable and available on many different platforms, from embedded to server.
  • Open Source, licensed under the Boost Software License.

alt text

To start using POCO, see the Guided Tour and Getting Started documents.

Quick Start (with CMake)

Prerequisites

  • CMake 3.5 or newer
  • A C++14 compiler (Visual C++ 2015, GCC 5.0, Clang 3.4, or newer)
  • OpenSSL headers and libraries (optional, but recommended)
  • MySQL, PostgreSQL and ODBC client libraries (optional)

Most Unix/Linux systems already have OpenSSL preinstalled. If your system does not have OpenSSL, please get it from http://www.openssl.org or another source. You do not have to build OpenSSL yourself - a binary distribution is fine. For example, via Debian APT:

$ apt-get install openssl libssl-dev

On macOS, the easiest way to install OpenSSL is via Homebrew:

$ brew install openssl

The easiest way to install OpenSSL on Windows is to use a binary (prebuild) release, for example the one from Shining Light Productions that comes with a Windows installer.

On Windows, POCO can also use the native Windows TLS APIs (SChannel).

Installing All Dependencies (Linux and macOS)

All dependencies can be installed with the following commands:

Debian Linux (including Ubuntu and Raspbian)

$ sudo apt-get -y update && sudo apt-get -y install git g++ make cmake libssl-dev

RedHat Linux

$ sudo yum install -y git gcc-c++ make cmake3 openssl-devel

macOS (with Homebrew)

$ brew install cmake openssl

Building with CMake (Linux, macOS, Windows)

CMake (version 3.5 or newer) is the recommended build system for building the POCO C++ Libraries.

$ git clone -b master https://github.com/pocoproject/poco.git
$ cd poco
$ mkdir cmake-build
$ cd cmake-build
$ cmake ..
$ cmake --build . --config Release

On macOS, it's necessary to tell CMake where to find the OpenSSL headers and libraries by setting the OPENSSL_ROOT_DIR CMake variable. For example, if OpenSSL has been installed with Homebrew, the cmake invocation becomes:

$ cmake .. -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl

Other common ways of building with CMake (e.g., cmake-gui) will also work.

There are also a number of project-specific CMake variables that can be changed.

Cross-Compiling

With a proper CMake toolchain file (specified via the CMAKE_TOOLCHAIN_FILE CMake variable), the POCO C++ Libraries can be cross-compiled for embedded Linux systems:

$ cmake .. -DCMAKE_TOOLCHAIN_FILE=/path/to/mytoolchain.cmake -DCMAKE_INSTALL_PREFIX=/path/to/target

Installing

The POCO C++ Libraries headers and libraries can be optionally be installed by building the install target.

$ sudo cmake --build . --target install

The default install location is /usr/local/ on Linux and macOS and C:\Program Files (x64)\ on Windows and can be overridden by setting the CMAKE_INSTALL_PREFIX CMake variable.

Building Without CMake

If you do not want to or cannot use CMake, POCO can also be built with Visual Studio (project and solution files included) or GNU Make (Linux, macOS and other supported Unix platforms).

Please refer to the documentation for more information.

Getting POCO via a Package Manager

POCO can also be obtained via different package managers.

Community and Contributing

POCO has an active user and contributing community, please visit our website and blog. Answers to POCO-related questions can also be found on Stack Overflow.

Please see CONTRIBUTING for submitting contributions, bugs reports, feature requests or security issues.

POCO vs. Boost

In regards to Boost, in spite of some functional overlapping, POCO is best thought of as a Boost complement (rather than replacement). Side-by-side use of Boost and POCO is a very common occurrence.

You can’t perform that action at this time.