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. https://pocoproject.org/

Günter Obiltschnig 369c0fc23d fix(Data): dependencies 2 ani în urmă
.github ddfd4c10ee fix packages-qa.yml 2 ani în urmă
.vscode 640600c147 fix(DataTest): move to Data directory 2 ani în urmă
ActiveRecord e622b51d6b fix(SQLParser): remove leftover unnecessary includes 2 ani în urmă
ApacheConnector d5a5ebc2d7 enh: #3890: Get rid of SingletonHolder 2 ani în urmă
CppParser 499a7d35f9 fix(build): regenerate VS projects #4453 2 ani în urmă
CppUnit 5e5e9297a6 fix(CppUnit): remove Foundation dependency 2 ani în urmă
Crypto 499a7d35f9 fix(build): regenerate VS projects #4453 2 ani în urmă
Data 369c0fc23d fix(Data): dependencies 2 ani în urmă
Encodings 499a7d35f9 fix(build): regenerate VS projects #4453 2 ani în urmă
Foundation 8460105d5a fix(Any): nullptr_t usage #4465 2 ani în urmă
JSON 499a7d35f9 fix(build): regenerate VS projects #4453 2 ani în urmă
JWT 499a7d35f9 fix(build): regenerate VS projects #4453 2 ani în urmă
MongoDB 499a7d35f9 fix(build): regenerate VS projects #4453 2 ani în urmă
Net 30a0a06bac chore(ParallelSocketAcceptor): remove unnecessary include and using from header 2 ani în urmă
NetSSL_OpenSSL 499a7d35f9 fix(build): regenerate VS projects #4453 2 ani în urmă
NetSSL_Win 499a7d35f9 fix(build): regenerate VS projects #4453 2 ani în urmă
PDF 499a7d35f9 fix(build): regenerate VS projects #4453 2 ani în urmă
PageCompiler 499a7d35f9 fix(build): regenerate VS projects #4453 2 ani în urmă
PocoDoc 2190a8a901 fix(PocoDoc): remove SQLParser from include list 2 ani în urmă
ProGen 499a7d35f9 fix(build): regenerate VS projects #4453 2 ani în urmă
Prometheus 499a7d35f9 fix(build): regenerate VS projects #4453 2 ani în urmă
Redis 499a7d35f9 fix(build): regenerate VS projects #4453 2 ani în urmă
SevenZip c7d16b2a7e 4368 oracle odbc tests (#4410) 2 ani în urmă
Util 499a7d35f9 fix(build): regenerate VS projects #4453 2 ani în urmă
XML 499a7d35f9 fix(build): regenerate VS projects #4453 2 ani în urmă
Zip 3f1b1c8ee8 dependencies, DataTest 2 ani în urmă
build ee39b611f2 fix(SQLParser): move to Data dir; add extradirs, remove vs 140,150 build scripts generation 2 ani în urmă
ci 701c8dae2d Build and dev system improvements (#4193) 2 ani în urmă
cmake d6dfa257e1 Fix detection of odbc and apache2 for Fedora (#4461) 2 ani în urmă
contrib dc9aafa7a1 Moved contributed CMake modules to "cmake" folder 13 ani în urmă
doc 3261ebbd42 doc: updated changelog 2 ani în urmă
packaging 708a5d8307 RFC: Remove Windows CE support (#4342) 2 ani în urmă
patches d75e68c027 new trunk (base for 1.5) 14 ani în urmă
release 4b782b0958 chore(Data): add dependencies to DataTest 2 ani în urmă
.gitattributes 51dd9234f2 more line ending fixes 13 ani în urmă
.gitignore 4e352c8dbd Add old Visual Studio files to gitignore 2 ani în urmă
.gitmodules 3828e32268 remove openssl submodule 6 ani în urmă
CHANGELOG 3261ebbd42 doc: updated changelog 2 ani în urmă
CMakeLists.txt 41ce8be229 enh(tests): Ability to enable/disable testing of deprecated functionality. (#4425) 2 ani în urmă
CODE_OF_CONDUCT.md f55f8c0bca add CODE_OF_CONDUCT.md 8 ani în urmă
CONTRIBUTING.md c5d94c2616 updated contribution guidelines 6 ani în urmă
CONTRIBUTORS 695f813eb6 Release 1.13.1: Update release notes, changelog, contributors, version files. (#4440) 2 ani în urmă
DLLVersion.rc 695f813eb6 Release 1.13.1: Update release notes, changelog, contributors, version files. (#4440) 2 ani în urmă
LICENSE b0581433a7 LICENSE: add info about SPDX-License-Identifier usage and use it 12 ani în urmă
Makefile 640600c147 fix(DataTest): move to Data directory 2 ani în urmă
README 92152c8796 Add how to install using Conan section on README (#3727) 3 ani în urmă
README.md 10f41c06d9 Improve project C++17 support (#4334) 2 ani în urmă
VERSION 695f813eb6 Release 1.13.1: Update release notes, changelog, contributors, version files. (#4440) 2 ani în urmă
build_cmake.cmd 612f092235 Cleanup cmake build system to use transitive dependency management from cmake (#2321) 7 ani în urmă
build_cmake.sh 612f092235 Cleanup cmake build system to use transitive dependency management from cmake (#2321) 7 ani în urmă
build_vs160.cmd dcef2f0fcc add build_vs160.cmd 6 ani în urmă
build_vs170.cmd 6b87beb723 #3405 #3482 #3485 3 ani în urmă
buildwin.cmd e0e628ac7e fix(build): fix build with openssl 3.1.0 on vs2022 (#3969) 3 ani în urmă
buildwin.ps1 640600c147 fix(DataTest): move to Data directory 2 ani în urmă
components 4b782b0958 chore(Data): add dependencies to DataTest 2 ani în urmă
configure 2fe694e4d3 fix(SQLParser): Disable SQL parsing by default #4462 2 ani în urmă
cppignore.lnx e868ecb247 cppignore: add testEchoIPv4Move (#4322) 2 ani în urmă
cppignore.win b0dc9c5a82 fix(SocketReactorTest): deadlock test intermittently hangs #4400 (#4401) 2 ani în urmă
env.bat 634aefdb27 Setup POCO_BASE on Windows 7 ani în urmă
env.sh f11145547b re-added MongoDB, improved buildwin and release scripts 12 ani în urmă
gh-cli-for-release-notes.sh 695f813eb6 Release 1.13.1: Update release notes, changelog, contributors, version files. (#4440) 2 ani în urmă
libversion 695f813eb6 Release 1.13.1: Update release notes, changelog, contributors, version files. (#4440) 2 ani în urmă
poco_env.bash 70bb3a40de Add ProcessRunner and PIDFile (#4225) 2 ani în urmă
progen.ps1 640600c147 fix(DataTest): move to Data directory 2 ani în urmă
runLibTests.sh 1e90f64bbf 4307/8/9/10 data races (#4312) 2 ani în urmă
runVSCode.sh 701c8dae2d Build and dev system improvements (#4193) 2 ani în urmă
tsan.suppress 70bb3a40de Add ProcessRunner and PIDFile (#4225) 2 ani în urmă

README

This is the README file for the POCO C++ Libraries.

In this document you will find a brief description of the directory layout,
as well as a description necessary steps to build the POCO C++ Libraries.

The Foundation library contains a platform abstraction layer (including classes
for multithreading, file system access, logging, etc.), as well as
a large number of useful utility classes, such various stream buffer and stream
classes, URI handling, and many more.
The XML library contains an XML parser with SAX2 and DOM interfaces,
as well as an XMLWriter.
The Util library contains classes for working with configuration files and
command line arguments, as well as various utility classes.
The Net library contains network classes (sockets, HTTP client/server, etc.).
All libraries come with a test suite and a number of sample programs.

The basic directory layout is as follows:

build/ the build system for Unix and additional utility scripts
config/ build configurations for various Unix platforms
rules/ common build rules for all platforms
scripts/ build and utility scripts
vxconfig/ VxWorks build configurations

cmake/ Support files for CMake

bin/ all executables (dynamic link libraries on Windows)
bin64/ all 64-bit executables (and DLLs)

doc/ additional documentation

lib/ all libraries (import libraries on Windows)
lib64/ all 64-bit libraries

CppUnit/ project and make/build files for the CppUnit unit testing framework
doc/ additional documentation
include/
CppUnit/ header files for CppUnit
src/ source files for CppUnit
WinTestRunner/ Windows GUI for CppUnit

Foundation/ project and make/build files for the Foundation library
include/
Poco/ header files for the Foundation library
src/ source files for the Foundation library
testsuite/ project and make/build files for the Foundation testsuite
src/ source files for the Foundation testsuite
bin/ test suite executables
samples/ sample applications for the Foundation library

XML/ project and make/build files for the XML library
include/
Poco/
XML/ header files for the core XML library
SAX/ header files for SAX support
DOM/ header files for DOM support
src/ source files for the XML library
testsuite/ project and make/build files for the XML testsuite
src/ source files for the XML testsuite
bin/ test suite executables
samples/ sample applications for the XML library

Net/ project and make/build files for the Net library
include/
Poco/
Net/ header files for the Net library
src/ source files for the Net library
testsuite/ project and make/build files for the Net testsuite
src/ source files for the Net testsuite
bin/ test suite executables
samples/ sample applications for the Net library


Depending on what package you have downloaded, there may be other libraries
as well (such as Data, Crypto, NetSSL_OpenSSL and Zip).


DOCUMENTATION
=============

Plenty of documentation (tutorial slides, articles and SDK reference)
is available at .


EXTERNAL DEPENDENCIES
=====================

The following libraries require third-party software (header files and
libraries) being installed to build properly:

- NetSSL_OpenSSL and Crypt require OpenSSL.
- Data/ODBC requires ODBC
(Microsoft ODBC on Windows, unixODBC or iODBC on Unix/Linux)
- Data/MySQL requires the MySQL client.

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 (e.g., apt-get install openssl libssl-dev).
On macOS, install OpenSSL via Homebrew (brew install openssl).

The easiest way to install OpenSSL on Windows is to get the pre-built
libraries from the pocoproject/openssl Git repository at
. This repository is included
as a submodule in the poco GitHub repository, but not in the release
source code packages. You can also provide your own OpenSSL build by
editing the Visual Studio project files.

Depending on where you have installed the OpenSSL libraries,
you might have to edit the build script (buildwin.cmd), or add the
necessary paths to the INCLUDE and LIB environment variables.

Through the Poco/Crypto/Crypto.h and Poco/Net/NetSSL.h header files,
Visual C++ will automatically link the libcrypto.lib and libssl.lib
libraries. If your OpenSSL libraries are named differently, compile
with the macro POCO_EXTERNAL_OPENSSL defined and edit the project
files accordingly.

The Data library requires ODBC support on your system if you want
to build the ODBC connector (which is the default). On Windows
platforms, ODBC should be readily available if you have the
Windows SDK. On Unix/Linux platforms, you can use iODBC
(preinstalled on macOS X) or unixODBC. For the MySQL connector,
the MySQL client libraries and header files are required.

The Data/ODBC and Data/MySQL Makefiles will search for the ODBC
and MySQL headers and libraries in various places. Nevertheless,
the Makefiles may not be able to find the headers and libraries.
In this case, please edit the Makefile in Data/ODBC and/or Data/MySQL
accordingly.


BUILDING WITH CMAKE
===================

The POCO C++ Libraries support CMake as a build system on Linux, macOS and Windows.
To build the POCO C++ Libraries with CMake:

1. create a cmake-build directory (e.g. in the POCO root directory):

$ mkdir cmake-build

2. and run CMake from there:

$ cd cmake-build
$ cmake ..
$ make -s -j (or build the generated Visual Studio solution on Windows)

If you cannot or do not want to build with CMake, there are other options,
described in the following.


BUILDING - USING VCPKG
===================

You can download and install poco using the vcpkg(https://github.com/Microsoft/vcpkg)
dependency manager:

$ git clone https://github.com/Microsoft/vcpkg.git
$ cd vcpkg
$ ./bootstrap-vcpkg.sh
$ ./vcpkg integrate install
$ ./vcpkg install poco

The poco port in vcpkg is kept up to date by Microsoft team members and community contributors.
If the version is out of date, please create an issue or pull request(https://github.com/Microsoft/vcpkg)
on the vcpkg repository.


BUILDING - USING CONAN
======================

You can download and install poco using the Conan(https://github.com/conan-io/conan)
package manager. It needed to be installed first(https://conan.io/downloads.html):

You can install Poco libraries from Conan Center(https://conan.io/center.html):

$ conan install -r conancenter poco/1.12.0@

Or, you can download Poco recipe and build locally:

$ conan install -r conancenter poco/1.12.0@ --build=poco

The Poco recipe and packages in Conan Center are kept up to date by Conan team members and community contributors.
If the version is out of date, or you detect any wrong behavior, please create an issue or pull request(https://github.com/conan-io/conan-center-index)
on the Conan Center Index repository.


BUILDING ON WINDOWS
===================

Microsoft Visual Studio 2015 or newer is required to build the POCO C++ Libraries on
Windows platforms. Solution and project files for all versions from 2015 to 2022 are included.
64-bit (x64) builds are supported as well.
You can either build from within Visual Studio (Build->Batch Build->Select All;Rebuild)
or from the command line. To build from the command line, start the
Visual Studio Command Prompt and cd to the directory where you
have extracted the POCO C++ Libraries sources. Then, simply start the buildwin.cmd script
and pass as argument the version of visual studio (140, 150, 160, 170, etc.). You can customize
what is being built by buildwin.cmd by passing appropriate command line arguments to
it. Call buildwin.cmd without arguments to see what is available.

To disable certain components (e.g., NetSSL_OpenSSL or Data/MySQL) from the build,
edit the file named "components" and remove the respective lines.

Certain libraries, like NetSSL_OpenSSL, Crypto or Data/MySQL have dependencies
to other libraries. Since the build script does not know where to find the necessary
header files and import libraries, you have to either add the header file paths to
the INCLUDE environment variable and the library path to the LIB environment variable,
or you'll have to edit the buildwin.cmd script, where these environment variables can
be set as well.

In order to run the test suite and the samples, the top-most bin directory containing
the shared libraries must be in the PATH environment variable.

IMPORTANT NOTE: Please make sure that the path to the directory containing the
POCO C++ Libraries source tree does not contain spaces. Otherwise, the Microsoft
message compiler may fail when building the Foundation library.


BUILDING ON UNIX/LINUX/macOS
============================

For building on Unix platforms, the POCO C++ Libraries come with their own
build system. The build system is based on GNU Make 5.0 (or newer), with the help
from a few shell scripts. If you do not have GNU Make 5.0 (or later) installed on
your machine, you will need to download it from
http://directory.fsf.org/devel/build/make.html>,
build and install it prior to building the POCO C++ Libraries.

You can check the version of GNU Make installed on your system with

> gmake --version

or

> make --version

Once you have GNU Make up and running, the rest is quite simple.
To extract the sources and build all libraries, testsuites and samples, simply

> gunzip poco-X.Y.tar.gz
> tar -xf poco-X.Y.tar
> cd poco-X.Y
> ./configure
> gmake -s

See the configure script source for a list of possible options.
For starters, we recommend --no-tests and --no-samples, to reduce build times.
On a multicore or multiprocessor machine, use parallel makes to speed up
the build (make -j4).

Once you have successfully built POCO, you can install it
to /usr/local (or another directory specified as parameter
to configure --prefix=):

> sudo gmake -s install

You can omit certain components from the build. For example, you might
want to omit Data/ODBC or Data/MySQL if you do not have the corresponding
third-party libraries (iodbc or unixodbc, mysqlclient) installed
on your system. To do this, use the --omit argument to configure:

> ./configure --omit=Data/ODBC,Data/MySQL


IMPORTANT: Make sure that the path to the build directory does not
contain symbolic links. Furthermore, on macOS (or other systems
with case insensitive filesystems), make sure that the characters in
the path have the correct case. Otherwise you'll get an error saying
"Current working directory not under $PROJECT_BASE.".


BUILDING ON QNX NEUTRINO
========================

For QNX Neutrino, the Unix build system (see the instructions above) is used.
You can use the build system to cross-compile for a target platform on a Solaris or
Linux host. Unfortunately, the Cygwin-based Windows host environment has some major
quirks that prevent the build system from working there. You can also use the
build system on a self-hosted QNX system. The default build configuration for QNX
(found in build/config/QNX) is for a self-hosted x86 platform. To specify another
target, edit the CCVER setting in the build configuration file. For example, to
compile for a PowerPC target, specify CCVER=3.3.1,gcc_ntoppcbe.

Service Pack 1 for QNX Neutrino 6.3 must be installed, otherwise compiling the
Foundation library will fail due to a problem with the header in the
default (Dinkumware) C++ standard library.

When building on QNX, you might want to disable NetSSL_OpenSSL, Crypto and
some Data connectors, unless you have the necessary third party components
available:

> ./configure --omit=NetSSL_OpenSSL,Crypto,Data/ODBC,Data/MySQL


BUILDING FOR VXWORKS
====================

Please see the VxWorks Platform Notes in the Reference Documentation for
more information. The Reference Documentation can be found online
at .


MORE INFORMATION
================

For more information, see the POCO C++ Libraries website
at .