| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414 |
- Getting Started With The POCO C++ Libraries
- AAAIntroduction
- !!!Welcome
- Thank you for downloading the POCO C++ Libraries and welcome to the growing community of POCO C++ Libraries
- users. This document will help you in getting a smooth ride while installing and setting up the
- POCO C++ Libraries and going the first steps with the software.
- !!!Setting Up The POCO C++ Libraries
- The POCO C++ Libraries are delivered in full source code only. Due to the
- large number of possible build configurations, no binary releases are provided
- from the project maintainers.
- This means that you have to build the libraries and tools before you can use them the first time.
- <*Note: There are binary releases available as installation packages for
- various operating systems (e.g., Debian Linux, Ubuntu Linux, OpenBSD,
- OpenWRT, etc.). However, these packages are not maintained by the core
- team and may not always be up to date.*>
- Up-to-date [[https://conan.io Conan]] packages are available via
- [[https://bintray.com/pocoproject/conan/Poco%3Apocoproject Bintray]].
- !!Source Code Distribution Format
- The source code for the POCO C++ Libraries is delivered in a ZIP file
- for Windows users and/or in a compressed TAR file (.tar.gz or .tar.bz2)
- for Unix/Linux users. Both archives contain the same files, the only
- difference is that all text files in the ZIP files have line endings
- suitable for Windows (CR-LF), while the text files in the TAR file have
- line endings suitable for Unix/Linux (LF only).
- All libraries and tools follow a common convention for the directory
- layout. This directory layout is shown below.
- 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 (Basic or Complete
- Edition), there may be other libraries as well (such as Data, Crypto,
- NetSSL_OpenSSL and Zip).
- !!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.
- !OpenSSL
- <*Unix/Linux*>
- Most Unix/Linux systems already have OpenSSL
- preinstalled, or OpenSSL can be easily installed using the system’s
- package management facility. For example, on Ubuntu (or other
- Debian-based Linux distributions) you can type
- $ sudo apt-get install openssl libssl-dev
- ----
- to install the necessary packages.
- 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.
- On macOS, it's recommended to install OpenSSL via Homebrew.
- $ brew install openssl
- ----
- <*Windows*>
- On Windows, there are three options:
- - Use POCO pre-built OpenSSL binaries (simplest and recommended)
- - Build OpenSSL using scripts from POCO distribution package
- - Use a third-party pre-built OpenSSL
- <*POCO pre-built OpenSSL binaries*>
- OpenSSL binaries (version 1.1.0) built with Visual Studio 2013 are available for
- [[https://github.com/pocoproject/openssl/tree/master/VS_120 download]].
- In case you are using pre-built binaries, please make sure to copy the
- entire directory to <*C:\%POCO_BASE%\openssl\*>.
- Or, %POCO_BASE%\openssl directory can be deleted and openssl
- repository cloned:
- $ cd %POCO_BASE%
- $ rmdir /s /q openssl
- $ git clone https://github.com/pocoproject/openssl
- All libraries are located in their proper folders (eg. <*win64/bin/debug/*>),
- and all are named identically (<*libcrypto*> and <*libssl*>).
- <*Build OpenSSL using scripts from POCO distribution package*>
- Alternatively, if you choose to build your own OpenSSL, POCO C++ Libraries
- distribution package comes with scripts to build OpenSSL on Windows operating
- system. This requires Windows PowerShell.
- Usage:
- C:\%POCO_BASE%\openssl\build.ps1 [-openssl_release 1.0.0 | 1.1.0]
- [-vs_version 150 | 140 | 120 | 110 | 100 | 90]
- [-config release | debug | both]
- [-platform Win32 | x64]
- [-library shared | static]
- ----
- Example: Building OpenSSL 1.1.0, DLL release build for x64 with Visual Studio 2013:
- C:\%POCO_BASE%\openssl\build.ps1 -openssl_release 1.1.0 -vs_version 120 -config release -platform x64 -library shared
- ----
- The above command will download all the necessary packages (perl, nasm, etc)
- and buil OpenSSL in <*C:\%POCO_BASE%\openssl\VS_120*> directory; the built OpenSSL
- binaries can be linked from EXEs and DLLs built with Visual Studio 2008 to 2017.
- Pre-generated POCO Visual Studio projects are configured to use headers and
- libraries from <*VS_120*> directory.
- <*Use a third-party pre-built OpenSSL*>
- Yet another 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. You might also
- have to edit the project settings if the names of the OpenSSL libraries
- from your build differ from the names used in the project files.
- NOTE: To disable internal automatic linking of supplied binaries in pre-generated
- POCO Visual Studio projects, define <[POCO_EXTERNAL_OPENSSL]> in your build environment.
- Alternatively, you can either rename your binaries, or edit the
- <*%POCO_BASE%\Crypto\include\Poco\Crypto\Crypto.h*> file if the names of the
- OpenSSL libraries from your build differ from the names used thereof
- (look for "#pragma comment" lines in <*Crypto.h*>).
- !ODBC
- 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 installed.
- On Unix/Linux platforms, you can use [[http://www.iodbc.org/ iODBC]]
- or [[http://www.unixodbc.org/ unixODBC]. On
- Linux, use your distribution's package management system to install the
- necessary libraries and header files. For example, on Ubuntu, type
- $ sudo apt-get install libiodbc2 libiodbc2-dev
- ----
- to install the iODBC library and header files.
- 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.
- !MySQL Client
- The Data library requires the [[http://dev.mysql.com MySQL]] client
- libraries and header files if you want to build the MySQL connector
- (which is the default). On Windows platforms, use the MySQL client
- installer to install the necessary files. On Unix/Linux platforms, use
- the package management system of your choice to install the necessary
- files. Alternatively, you can of course build MySQL yourself from
- source.
- !!Building using CMake
- As an alternative to the platform specific Makefiles and Solutions, CMake can be used
- to do build Poco. CMake is a cross platform Makefile generator that also supports
- Microsoft Visual Studio and Apple Xcode.
- Poco requires CMake 3.0 or higher. Static binaries for many platforms can be downloaded from http://www.cmake.org/
- CMake supports out of source builds and this is the recommended way to build Poco using CMake.
- Assuming you are currently in the Poco source directory on a Unix machine
- and you like to build Poco with the generated Makefiles just type the following commands.
- $ mkdir cmake_build
- $ cd cmake_build
- $ cmake ..
- $ make
- This will build Poco in a subdirectory <*cmake_build*>. All files produced during build are located in this directory.
- CMake allows you to set some build time options. As an example: to disable the SevenZip support
- type the following command:
- $ cmake -DENABLE_SEVENZIP=OFF ..
- Similar options are available for other components (see: CMakeLists.txt).
- If you cannot or do not want to build with CMake, there are other options,
- described in the following.
- !!Building On Windows
- Microsoft Visual Studio 2008 or newer is required to build the
- POCO C++ Libraries on Windows platforms.
- Solution and project files for all versions 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 2008 (or 2010, 2013, etc.) Command
- Prompt and go (<[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 (90, 100, 110, ... 150). 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. Build environment is set up by the buildwin.cmd; to avoid
- build problems, it is recommended to start the build in a clean command
- prompt console, i.e. not in the one provided by Visual Studio for 32/64-bit
- builds (although those will work fine if used appropriately for the right
- 32/64-bit build type).
- To disable certain components (e.g., NetSSL_OpenSSL or Data/MySQL) from
- the build, edit the text file named <*components*> in the distribution
- root directory and remove or comment 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 resulting shared libraries must be in the PATH
- environment variable.
- !!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 3.80 (or newer),
- with the help from a few shell scripts. If you do not have GNU Make 3.80
- (or newer) installed on your machine, you will need to download it from
- http://directory.fsf.org/devel/build/make.html and
- 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
- ----
- For help, either invoke
- $ ./configure --help
- ----
- Alternatively, you can read 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=<path>]>):
- $ 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 <*<list>*> 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
- ----
- !!!Tutorials And Sample Code
- Introductory documentation consisting of various documents and tutorials
- in the form of slide decks can be found at the
- [[http://pocoproject.org/documentation/ POCO C++ Libraries Documentation]] page.
- Sample applications demonstrating the various features of the POCO C++
- Libraries are delivered with the source code. Every library's source
- code directory
- has a <*samples*> directory containing various sample applications.
- When building the sample applications on platforms using the gmake-based
- build system, please make sure that the environment variable
- <[POCO_BASE]> contains
- the path to the POCO C++ Libraries source tree root directory.
- !!!Creating Your Own POCO-based Applications
- The best way to create your first POCO-based application is by copying
- one of the sample projects and making the desired changes. Examine the
- project files and Makefiles to see what compiler options must be set for
- your specific platform.
|