Go to file
2021-07-26 17:40:19 +02:00
.github/workflows add ci.yml 2021-07-06 11:43:51 +02:00
ApacheConnector make CMake files style (more) consistent 2020-02-14 11:07:32 +01:00
appveyor Use develop branch syntax 2018-05-28 14:57:52 +02:00
build FreeBSD build config now uses clang 2020-02-16 19:52:01 +01:00
ci chore(ci): add dir and run script 2021-07-21 14:35:04 +02:00
cmake remove ENABLE_MSVC_MP cmake option 2020-02-17 08:36:04 +01:00
contrib Moved contributed CMake modules to "cmake" folder 2012-12-16 00:40:40 -02:00
CppParser make CMake files style (more) consistent 2020-02-14 11:07:32 +01:00
CppUnit removed SDK version from project files 2020-02-21 14:24:09 +01:00
Crypto #3230: ECDSADigestEngine: include missing header 2021-04-12 20:37:25 +02:00
Data include order 2021-04-16 08:11:25 +02:00
doc remove HowToGetHelp page due to outdated information 2021-04-11 17:36:22 +02:00
Encodings make CMake files style (more) consistent 2020-02-14 11:07:32 +01:00
Foundation feat(SocketProactor): initial version w/ completion handler and executor 2021-07-21 13:49:09 +02:00
JSON #3114: Added JSON Array::empty() method 2021-04-12 20:33:42 +02:00
JWT #3202: JWT: ESxxx signature must include padding for ECDSA R and S values 2021-02-06 11:33:27 +01:00
MongoDB make CMake files style (more) consistent 2020-02-14 11:07:32 +01:00
Net modify(SocketProactor): allow restart #3357 2021-07-26 17:40:19 +02:00
NetSSL_OpenSSL style fixes for #2935; check OpenSSL version 2020-02-28 08:57:31 +01:00
NetSSL_Win NetSSL_Win: fix potential endless loop due to wrong error handling 2020-03-13 09:33:08 +01:00
packaging Move include to runtime. Add PostgreSQL includes 2018-10-24 23:51:24 +02:00
PageCompiler make CMake files style (more) consistent 2020-02-14 11:07:32 +01:00
patches/AIX new trunk (base for 1.5) 2012-04-23 01:14:34 +00:00
PDF #2927 2021-04-11 17:32:55 +02:00
PocoDoc Merge branch 'poco-1.10.1' into devel 2020-02-14 11:46:27 +01:00
ProGen fix project.targetArchitecture for x64 2020-01-13 20:56:32 +01:00
Redis make CMake files style (more) consistent 2020-02-14 11:07:32 +01:00
release remove WinTestRunner 2020-01-27 15:31:02 +01:00
SevenZip Zip and SevenZip do not depend on Util, XML, JSON 2020-02-18 00:14:36 +08:00
travis fix travis builds 2020-02-08 21:29:28 +01:00
Util added Application::windowSize() 2021-04-11 16:39:44 +02:00
XML formatting 2021-04-11 16:38:00 +02:00
Zip Zip and SevenZip do not depend on Util, XML, JSON 2020-02-18 00:14:36 +08:00
.gitattributes more line ending fixes 2012-11-11 11:20:31 +01:00
.gitignore re-generated project files 2020-01-11 22:33:28 +01:00
.gitmodules remove openssl submodule 2020-01-12 09:01:35 +01:00
.travis.yml skip more libs on arm build to stay under 50min limit 2020-02-14 08:45:12 +01:00
appveyor.yml disable failing projects in appveyor build 2020-02-04 20:07:17 +01:00
build_cmake.cmd Cleanup cmake build system to use transitive dependency management from cmake (#2321) 2018-06-03 11:17:50 -05:00
build_cmake.sh Cleanup cmake build system to use transitive dependency management from cmake (#2321) 2018-06-03 11:17:50 -05:00
build_vs140.cmd Use defaulted 'msbuild' tool 2018-06-01 13:55:02 +02:00
build_vs150.cmd Use defaulted 'msbuild' tool 2018-06-01 13:55:02 +02:00
build_vs160.cmd add build_vs160.cmd 2020-01-12 10:03:01 +01:00
buildwin.cmd build fixes 2020-01-11 23:50:16 +01:00
buildwin.ps1 Install VSSetup PowerShell script and use it to compute vs150 & vs160 paths 2019-07-11 15:19:07 +02:00
CHANGELOG updated changelog 2020-02-16 19:48:34 +01:00
CMakeLists.txt fix(hashRange): change function names casing 2021-04-05 18:04:27 +02:00
CODE_OF_CONDUCT.md add CODE_OF_CONDUCT.md 2018-02-09 09:19:46 +01:00
components added JWT library 2019-07-30 11:19:49 +02:00
configure remove duplicate files and remaining Id headers 2017-11-10 09:26:24 +01:00
CONTRIBUTING.md updated contribution guidelines 2020-01-12 10:11:47 +01:00
CONTRIBUTORS unescape Backslash char in UTF8 unescape method 2019-12-16 22:43:40 +01:00
cppignore.lnx ignore another test 2020-02-09 09:45:25 +01:00
cppignore.win Add HTTPSClientSessionTest::.testCachedSession 2020-01-21 08:23:40 +01:00
DLLVersion.rc bump version to 1.10.1 2020-02-04 08:52:26 +01:00
env.bat Setup POCO_BASE on Windows 2018-06-20 09:44:33 +02:00
env.sh re-added MongoDB, improved buildwin and release scripts 2013-07-23 15:04:48 +02:00
libversion bump version to 1.10.1 2020-02-04 08:52:26 +01:00
LICENSE LICENSE: add info about SPDX-License-Identifier usage and use it 2014-05-14 08:38:09 +02:00
Makefile fix Makefile for JWT 2020-01-22 14:22:53 +01:00
NEWS Remove \$Id`$ headers 2017-09-09 11:14:06 +02:00
README updated README 2020-01-27 09:27:34 +01:00
README.md Merge branch 'poco-1.10.1' into devel 2020-02-04 15:48:34 +01:00
VERSION bump version to 1.10.1 2020-02-04 08:52:26 +01:00

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.