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 2afd72192f Merge branch 'poco-1.8.0' of https://github.com/pocoproject/poco into poco-1.8.0 8 years ago
ApacheConnector 1a18621ff8 ifdef auto_ptr 8 years ago
CppParser 04e7e04d4d Remove \$Id`$ headers 8 years ago
CppUnit 1a18621ff8 ifdef auto_ptr 8 years ago
Crypto 3ddda2f163 Add missing std:: namespace (#1946) 8 years ago
Data 1b2bd22d34 wrong field size calculation in ODBC code #1659 and other develop backports 8 years ago
Foundation b7ca307832 Fix android compile error with newer NDK. 8 years ago
JSON ba876aa4cd fix JSON windows compile 8 years ago
MongoDB 210248d719 MongoDB: add connection string URI support 8 years ago
Net 37927faf66 Merge pull request #1971 from Bjoe/remove-soo-in-net 8 years ago
NetSSL_OpenSSL 1a18621ff8 ifdef auto_ptr 8 years ago
NetSSL_Win d172273a75 remove remaining $Id$ tags from file headers 8 years ago
PDF 04e7e04d4d Remove \$Id`$ headers 8 years ago
PageCompiler 1a18621ff8 ifdef auto_ptr 8 years ago
PocoDoc 1a18621ff8 ifdef auto_ptr 8 years ago
ProGen ab90c48da2 backport EVPPKey file/stream load/save capabilities 8 years ago
SevenZip d172273a75 remove remaining $Id$ tags from file headers 8 years ago
Util d172273a75 remove remaining $Id$ tags from file headers 8 years ago
XML d172273a75 remove remaining $Id$ tags from file headers 8 years ago
Zip 5a6009d9a2 added missing file 8 years ago
build 8c336637f9 installed headers/libs are used over builddir files #298 8 years ago
cmake c6e1a0137b Verify in cmake if it possible to compile with C++yy standard 8 years ago
contrib dc9aafa7a1 Moved contributed CMake modules to "cmake" folder 13 years ago
doc 5084457f83 add note on git clone openssl 8 years ago
openssl @ 26b1673caa b4f1427725 make all save() functions const 8 years ago
patches d75e68c027 new trunk (base for 1.5) 14 years ago
release 675e7f6242 mkrelease: add CMakeLists.txt for CppUnit 8 years ago
travis a4552be049 added missing script for travis config change 10 years ago
.gitattributes 51dd9234f2 more line ending fixes 13 years ago
.gitignore e89e3745ee add Crypto PKCS12/EC; update VS projects 8 years ago
.gitmodules 4c680c17b2 add openssl submodule 8 years ago
.travis.yml 87ec631b4a try to fix clang build (use libc++) 8 years ago
CHANGELOG 3f1e82ad86 Merge branch 'poco-1.7.9' into poco-1.8.0 8 years ago
CMakeLists.txt c6e1a0137b Verify in cmake if it possible to compile with C++yy standard 8 years ago
CONTRIBUTING.md dab6336453 updated README and CONTRIBUTING 9 years ago
CONTRIBUTORS 572bf8d49e added new contributor 10 years ago
DLLVersion.rc ef59b4bd67 merge poco-1.7.9 into poco-1.8.0 8 years ago
LICENSE b0581433a7 LICENSE: add info about SPDX-License-Identifier usage and use it 11 years ago
Makefile 6273f52385 make uninstall does not remove .so symlinks #1017 8 years ago
NEWS 04e7e04d4d Remove \$Id`$ headers 8 years ago
README 04e7e04d4d Remove \$Id`$ headers 8 years ago
README.md 6ade50b1ab fix README and libversion merge conflict 8 years ago
VERSION 1657fe0fb0 created branch for version 1.8.0 9 years ago
appveyor.yml d3c1dfa912 fixed appveyor.yml 9 years ago
build_CE_vs90.cmd d75e68c027 new trunk (base for 1.5) 14 years ago
build_cmake.cmd 79eab26377 the great line endings cleanup 13 years ago
build_cmake.sh 05ebb66609 added cmake support 13 years ago
build_vcexpress2008.cmd a3362e7c70 "tests" are missing in build_vcexpress.cmd 13 years ago
build_vcexpress2010.cmd a3362e7c70 "tests" are missing in build_vcexpress.cmd 13 years ago
build_vs100.cmd 9f76b49ac0 some last minute changes 13 years ago
build_vs110.cmd 9f76b49ac0 some last minute changes 13 years ago
build_vs120.cmd 756a18b921 added build_vs120.cmd (for consistency) 11 years ago
build_vs140.cmd 2065799db9 update build scripts for VS2015 10 years ago
build_vs150.cmd 7a199d5545 added support for Visual Studio 2017 9 years ago
build_vs90.cmd 9f76b49ac0 some last minute changes 13 years ago
build_wdexpress2012.cmd 613a725b9c Support Visual Studio Express 2012 for Windows Desktop 13 years ago
build_wdexpress2013.cmd 4cd82b3dfd new build command for VS2013 Express Edition. 11 years ago
buildwin.cmd 7a199d5545 added support for Visual Studio 2017 9 years ago
buildwin.ps1 d8a0eec15e remove debug output 9 years ago
components a221eba7d9 Readd generated Timehandler.cpp & TimeHandler.h. 9 years ago
configure 6a8020b967 fixed GH #1537: Need to add multiple cflags parameters to configure 9 years ago
env.sh f11145547b re-added MongoDB, improved buildwin and release scripts 12 years ago
libversion 6ade50b1ab fix README and libversion merge conflict 8 years ago

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/OpenVMS and additional utility scripts
config/ build configurations for various Unix platforms
rules/ common build rules for all platforms
scripts/ build and utility scripts
vms/ OpenVMS build system scripts
vxconfig/ VxWorks build configurations

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).

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
(http://www.slproweb.com/products/Win32OpenSSL.html).
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.

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 Mac OS 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 ON WINDOWS
===================

Microsoft Visual Studio 7.1 (2003), 8.0 (2005), 9.0 (2008) or 10.0 (2010) is required to
build the POCO C++ Libraries on Windows platforms. Solution and project files for all
versions are included. For Visual Studio 2008 and 2010, 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 .NET 2003 (or 2005/2008/2010) 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 (71, 80, 90 or 100). 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 FOR WINDOWS CE

Building for Windows CE is supported with Microsoft Visual Studio 2008.
Unless you have the Digi JumpStart Windows CE 6.0 SDK installed, you'll
have to modify the included Visual Studio project and solution files.
Please see the SDK Reference Documentation (http://pocoproject.org/documentation)
for instructions.


BUILDING ON UNIX/LINUX/MAC OS X
===============================

For building on Unix platforms, the POCO C++ Libraries come with their own
build system. The build system is based on GNU Make 3.80 (or newer), with the help
from a few shell scripts. If you do not have GNU Make 3.80 (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


To build on Mac OS X 10.3 with GCC 3, do the following:
(NOTE: This only affects 10.3; for 10.4/10.5 see above)

> ./configure --config=Darwin7
> make -s


IMPORTANT: Make sure that the path to the build directory does not
contain symbolic links. Furthermore, on Mac OS X (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 .


BUILDING ON OPENVMS
===================

OpenVMS is no longer supported in recent versions of POCO, due to both a
lack of interest and a lack of contributors. The following
instructions are here for historical reasons.

The POCO C++ Libraries come with their own build system for OpenVMS, implemented
by a bunch of DCL scripts. The scripts can be found in the build/vms directory.

To build the POCO C++ Libraries on OpenVMS, follow the following steps.

1) Download the .zip distribution of the POCO C++ Libraries

2) Unzip the archive
$ unzip -aa poco-0_91_4.zip

3) Change the directory
$ set def [.poco-0_01_4]

4) Create a lib directory
$ create/dir [.lib]

5) Run the buildvms.com script
$ @buildvms

This will build the debug versions of the libraries. To build the release
versions, use
$ @buildvms -release


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

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