mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2024-11-14 19:57:17 +01:00
640 lines
27 KiB
Plaintext
640 lines
27 KiB
Plaintext
|
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/build 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 (if existing) and POCO openssl
|
|||
|
github repository cloned into it:
|
|||
|
|
|||
|
$ 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 accordingly (<*libcrypto[mt[d]]*> and <*libssl[mt[d]]*>).
|
|||
|
|
|||
|
|
|||
|
<*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 2015:
|
|||
|
|
|||
|
C:\%POCO_BASE%\openssl\build.ps1 -openssl_release 1.1.0 -vs_version 140 -config release -platform x64 -library shared
|
|||
|
----
|
|||
|
|
|||
|
The above command will download all the necessary packages (perl, nasm, etc)
|
|||
|
and build OpenSSL in <*C:\%POCO_BASE%\openssl\build*> directory; the built OpenSSL
|
|||
|
binaries can be linked from EXEs and DLLs built with Visual Studio 2015 to 2019.
|
|||
|
|
|||
|
Pre-generated POCO Visual Studio projects are configured to use headers and
|
|||
|
libraries from <*C:\%POCO_BASE%\openssl\build*> 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.
|
|||
|
|
|||
|
|
|||
|
!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 C++ Libraries on any platform with any compiler. CMake is a meta build system and it
|
|||
|
generate native makefiles and workspaces that can be used in the compiler environment of
|
|||
|
your choice. For a quick overview see http://cgold.readthedocs.io/en/latest/overview/cmake-can.html
|
|||
|
|
|||
|
POCO C++ Libraries requires CMake 3.2 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 C++ Libraries using CMake.
|
|||
|
|
|||
|
Assuming the POCO C++ Libraries source is located in /path/to/poco directory and you like to build POCO C++ Libraries just type the
|
|||
|
following commands (Command parameters are all the same on any platform).
|
|||
|
|
|||
|
$ cmake -H/path/to/poco -B/path/to/poco-build
|
|||
|
$ cmake --build /path/to/poco-build
|
|||
|
|
|||
|
This will build POCO C++ Libraries in a subdirectory <*poco-build*>. All files produced during build are located in this directory.
|
|||
|
|
|||
|
|
|||
|
!!!Some cmake basic parameters:
|
|||
|
|
|||
|
For Makefile (default on Unix systems) and Ninja based build system (and all other single-configuration generators), there exists following build types:
|
|||
|
* Debug
|
|||
|
* Release
|
|||
|
* RelWithDebInfo (Release build with Debug infos)
|
|||
|
* MinSizeRel (Release build with size optimisation)
|
|||
|
|
|||
|
As default, POCO is build RelWithDebInfo. See cmake output like:
|
|||
|
|
|||
|
...
|
|||
|
-- [cmake] Build type: RelWithDebInfo
|
|||
|
...
|
|||
|
|
|||
|
You can change this with following parameter: <*CMAKE_BUILD_TYPE=....*>
|
|||
|
|
|||
|
For example to build with debug symbols:
|
|||
|
|
|||
|
$ cmake -H/path/to/poco -B/path/to/poco-build -DCMAKE_BUILD_TYPE=Debug
|
|||
|
$ cmake --build /path/to/poco-build
|
|||
|
|
|||
|
For more infos see https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
|
|||
|
|
|||
|
For multi-configuration generators, (like Visual Studio and Xcode), CMAKE_BUILD_TYPE is ignored!
|
|||
|
|
|||
|
For these you should set build type at build time:
|
|||
|
|
|||
|
For example to build with debug symbols:
|
|||
|
|
|||
|
$ cmake -H/path/to/poco -B/path/to/poco-build
|
|||
|
$ cmake --build /path/to/poco-build --config Debug
|
|||
|
|
|||
|
|
|||
|
Installation path of Poco is as defaults to /usr/local on UNIX and c:/Program Files/Poco on Windows.
|
|||
|
|
|||
|
You can change the path with following parameter: <*CMAKE_INSTALL_PREFIX=....*>
|
|||
|
|
|||
|
For example to install in /usr:
|
|||
|
|
|||
|
$ cmake -H/path/to/poco -B/path/to/poco-build -DCMAKE_INSTALL_PREFIX=/usr
|
|||
|
$ cmake --build /path/to/poco-build --install
|
|||
|
|
|||
|
This will install the poco libs in /usr/lib and the binaries in /usr/bin etc.
|
|||
|
|
|||
|
See also cmake output like:
|
|||
|
|
|||
|
....
|
|||
|
-- [cmake] Installation target path: /usr/local
|
|||
|
....
|
|||
|
|
|||
|
For more infos see https://cmake.org/cmake/help/latest/variable/CMAKE_INSTALL_PREFIX.html?highlight=cmake_install_prefix
|
|||
|
|
|||
|
|
|||
|
To set libraries type, you can use following parameter: <*BUILD_SHARED_LIBS=[ON/OFF]*>
|
|||
|
|
|||
|
$ cmake -H/path/to/poco -B/path/to/poco-build -DBUILD_SHARED_LIBS=OFF
|
|||
|
$ cmake --build /path/to/poco-build
|
|||
|
|
|||
|
As default, Poco build dynamic libraries, see cmake output like:
|
|||
|
...
|
|||
|
-- Building dynamic libraries
|
|||
|
...
|
|||
|
|
|||
|
|
|||
|
To set some additional compiler flags, you can use following parameters:
|
|||
|
|
|||
|
* CMAKE_C_FLAGS For C compiler
|
|||
|
* CMAKE_CXX_FLAGS For C++ compiler
|
|||
|
|
|||
|
For example:
|
|||
|
|
|||
|
$ cmake -H/path/to/poco -B/path/to/poco-build -DCMAKE_CXX_FLAGS=-fstack-protector
|
|||
|
$ cmake --build /path/to/poco-build
|
|||
|
|
|||
|
For default compile flags, see cmake output like:
|
|||
|
...
|
|||
|
-- [cmake] Build with cxx flags: -O2 -g -DNDEBUG
|
|||
|
-- [cmake] Build with c flags: -O2 -g -DNDEBUG
|
|||
|
...
|
|||
|
|
|||
|
For more infos see https://cmake.org/cmake/help/latest/variable/CMAKE_LANG_FLAGS.html#variable:CMAKE_%3CLANG%3E_FLAGS
|
|||
|
|
|||
|
|
|||
|
To use the compiler of your choice, you can use following paramters:
|
|||
|
|
|||
|
* CMAKE_C_COMPILER C compiler
|
|||
|
* CMAKE_CXX_COMPILER C++ compiler
|
|||
|
|
|||
|
For example to use the clang compiler, execute following cmake command:
|
|||
|
|
|||
|
$ cmake -H/path/to/poco -B/path/to/poco-build -DCMAKE_C_COMPILER=/path/to/clang -DCMAKE_CXX_COMPILER=/path/to/clang++
|
|||
|
$ cmake --build /path/to/poco-build
|
|||
|
|
|||
|
To cross compile POCO C++ Libraries for another architecture/device you should have a <*cmake toolchain file*> and execute following command:
|
|||
|
|
|||
|
$ cmake -H/path/to/poco -B/path/to/poco-build -DCMAKE_TOOLCHAIN_FILE=/path/to/toolchainfile
|
|||
|
$ cmake --build /path/to/poco-build
|
|||
|
|
|||
|
See https://cmake.org/cmake/help/latest/manual/cmake-toolchains.7.html for more information.
|
|||
|
|
|||
|
|
|||
|
!!!Poco special build parameters:
|
|||
|
|
|||
|
POCO C++ Libraries allows you to set some build time options. As an example: to disable the SevenZip support
|
|||
|
type the following command:
|
|||
|
|
|||
|
$ cmake -H/path/to/poco -B/path/to/poco-build -DENABLE_SEVENZIP=OFF
|
|||
|
$ cmake --build /path/to/poco-build
|
|||
|
|
|||
|
Here an overview of POCO build options:
|
|||
|
|
|||
|
* ENABLE_XML Set to OFF|ON (default is ON) to build XML support library
|
|||
|
* ENABLE_JSON Set to OFF|ON (default is ON) to build JSON support library
|
|||
|
* ENABLE_NET Set to OFF|ON (default is ON) to build Net support library
|
|||
|
* ENABLE_NETSSL Set to OFF|ON (default is ON) to build NetSSL support library (Need installed openssl libraries)
|
|||
|
* ENABLE_CRYPTO Set to OFF|ON (default is ON) to build Crypto support library (Need installed openssl libraries)
|
|||
|
* ENABLE_DATA Set to OFF|ON (default is ON) to build Data support library
|
|||
|
* ENABLE_DATA_SQLITE Set to OFF|ON (default is ON) to build Data SQlite support library
|
|||
|
* ENABLE_DATA_MYSQL Set to OFF|ON (default is ON) to build Data MySQL or MariaDB support library (Need installed MySQL or MariaDB client libraries)
|
|||
|
* ENABLE_DATA_POSTGRESQL Set to OFF|ON (default is ON) to build SQL PosgreSQL support library (Need installed PostgreSQL client libraries)
|
|||
|
* ENABLE_DATA_ODBC Set to OFF|ON (default is ON) to build Data ODBC support library (Need installed ODBC libraries)
|
|||
|
* ENABLE_MONGODB Set to OFF|ON (default is ON) to build MongoDB support library
|
|||
|
* ENABLE_REDIS Set to OFF|ON (default is ON) to build Redis support library
|
|||
|
* ENABLE_PDF Set to OFF|ON (default is OFF) to build PDF support library
|
|||
|
* ENABLE_UTIL Set to OFF|ON (default is ON) to build Util support library
|
|||
|
* ENABLE_ZIP Set to OFF|ON (default is ON) to build Zip support library
|
|||
|
* ENABLE_SEVENZIP Set to OFF|ON (default is OFF) to build SevenZip support library
|
|||
|
* ENABLE_APACHECONNECTOR Set to OFF|ON (default is ON) to build ApacheConnector support library (Need installed apache and apr libraries)
|
|||
|
* ENABLE_CPPPARSER Set to OFF|ON (default is OFF) to build C++ parser
|
|||
|
* ENABLE_ENCODINGS Set to OFF|ON (default is ON) to build with Encodings
|
|||
|
* ENABLE_ENCODINGS_COMPILER Set to OFF|ON (default is OFF) to build Encodings Compiler
|
|||
|
* ENABLE_PAGECOMPILER Set to OFF|ON (default is ON) to build PageCompiler
|
|||
|
* ENABLE_PAGECOMPILER_FILE2PAGE Set to OFF|ON (default is ON) to build File2Page
|
|||
|
* ENABLE_POCODOC Set to OFF|ON (default is OFF) to build Poco Documentation Generator
|
|||
|
* ENABLE_TESTS Set to OFF|ON (default is OFF) to build Unit tests
|
|||
|
* ENABLE_LONG_RUNNING_TESTS Set to OFF|ON (default is ON) to use long running test
|
|||
|
* POCO_UNBUNDLED Set to OFF|ON (default is OFF) to control linking dependencies as external
|
|||
|
|
|||
|
Windows only parameter:
|
|||
|
|
|||
|
* POCO_MT Set to OFF|ON (default is OFF) to control build of POCO as /MT instead of /MD
|
|||
|
* ENABLE_MSVC_MP Set to OFF|ON (default is OFF) to control parallel build of POCO with MSVC
|
|||
|
* ENABLE_NETSSL_WIN Set to OFF|ON (default is OFF) to build NetSSL support library(Need installed openssl libraries For Windows only)
|
|||
|
|
|||
|
You can also see and enable or disable available options execute following command:
|
|||
|
|
|||
|
$ cmake-gui /path/to/poco-build
|
|||
|
|
|||
|
or for console only:
|
|||
|
|
|||
|
$ ccmake /path/to/poco-build
|
|||
|
|
|||
|
POCO C++ Libraries options are prefixed with <*ENABLE_*>. (This will be changed in POCO 2.x.x to <*POCO_*>)
|
|||
|
|
|||
|
!!!Third-party library location
|
|||
|
|
|||
|
If a third-party library is not installed in a default location, cmake will fail to run.
|
|||
|
There exists following parameters to set additional search paths for cmake to find third-party libraries:
|
|||
|
|
|||
|
To find PostgreSQL:
|
|||
|
* PostgreSQL_ROOT_DIR - Set root installation path where to find include path and libraries of PostgreSQL
|
|||
|
or
|
|||
|
* PostgreSQL_ROOT_INCLUDE_DIRS - Set include paths where to find PostgreSQL headers
|
|||
|
* PostgreSQL_ROOT_LIBRARY_DIRS - Set library paths where to find PostgreSQL libraries
|
|||
|
|
|||
|
To find ODBC:
|
|||
|
* ODBC_ROOT_DIR - Set root installation path where to find include path and libraries of ODBC
|
|||
|
or
|
|||
|
* ODBC_ROOT_INCLUDE_DIRS - Set include paths where to find ODBC headers
|
|||
|
* ODBC_ROOT_LIBRARY_DIRS - Set library paths where to find ODBC libraries
|
|||
|
|
|||
|
To find MySQL or MariaDB:
|
|||
|
* MYSQL_ROOT_DIR - Set root installation path where to find include path and libraries of MySQL or MariaDB
|
|||
|
or
|
|||
|
* MYSQL_ROOT_INCLUDE_DIRS - Set include paths where to find MySQL or MariaDB headers
|
|||
|
* MYSQL_ROOT_LIBRARY_DIRS - Set library paths where to find MySQL or MariaDB libraries
|
|||
|
|
|||
|
* APRUTIL_ROOT_DIR - Set root installation path where to find include path and libraries of apr util
|
|||
|
or
|
|||
|
* APRUTIL_ROOT_INCLUDE_DIRS - Set include paths where to find apr util headers
|
|||
|
* APRUTIL_ROOT_LIBRARY_DIRS - Set library paths where to find apr util libraries
|
|||
|
|
|||
|
* APR_ROOT_DIR - Set root installation path where to find include path and libraries of apr
|
|||
|
or
|
|||
|
* APR_ROOT_INCLUDE_DIRS - Set include paths where to find apr headers
|
|||
|
* APR_ROOT_LIBRARY_DIRS - Set library paths where to find apr libraries
|
|||
|
|
|||
|
* APACHE2_ROOT_DIR - Set root installation path where to find include path and libraries of apache2
|
|||
|
or
|
|||
|
* APACHE2_ROOT_INCLUDE_DIRS - Set include paths where to find apache2 headers
|
|||
|
|
|||
|
|
|||
|
For example set installation path of MySQL:
|
|||
|
|
|||
|
$ cmake -H/path/to/poco -B/path/to/poco-build -DMYSQL_ROOT_DIR=/usr/local/mysql
|
|||
|
$ cmake --build /path/to/poco-build
|
|||
|
or
|
|||
|
$ cmake -H/path/to/poco -B/path/to/poco-build -DMYSQL_ROOT_INCLUDE_DIRS=/usr/local/mysql/include/mysql -DMYSQL_ROOT_LIBRARY_DIRS=/usr/local/lib/mysql
|
|||
|
$ cmake --build /path/to/poco-build
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
!!!How to use POCO in your cmake project:
|
|||
|
|
|||
|
To use POCO C++ Libraries in your cmake project, add following line in your project for example to use crypto:
|
|||
|
|
|||
|
find_package(Poco REQUIRED PocoCrypto)
|
|||
|
....
|
|||
|
target_link_libraries(yourTargetName ... Poco::Crypto)
|
|||
|
|
|||
|
If you get an error like 'By not providing "FindPoco.cmake"', then you should set CMAKE_PREFIX_PATH to the installation directory of your POCO C++ Libraries. For example:
|
|||
|
|
|||
|
$ cmake -H/path/to/yourProject -B/path/to/yourProject-build -DCMAKE_PREFIX_PATH=/path/to/installationOf/poco
|
|||
|
|
|||
|
!!!Some other Hints:
|
|||
|
|
|||
|
For a faster build, use ninja as build system. See https://ninja-build.org/
|
|||
|
For example on Ubuntu execute following commands:
|
|||
|
|
|||
|
$ sudo apt-get install ninja-build
|
|||
|
|
|||
|
This install <*ninja*> command. To use ninja-build execute following cmake commands:
|
|||
|
|
|||
|
$ cmake -H/path/to/poco -B/path/to/poco-build -GNinja
|
|||
|
$ cmake --build /path/to/poco-build --target all
|
|||
|
|
|||
|
See https://cmake.org/cmake/help/latest/manual/cmake-generators.7.html for other generators.
|
|||
|
|
|||
|
To enable verbose output from Makefile builds, execute following cmake commands:
|
|||
|
|
|||
|
$ cmake -H/path/to/poco -B/path/to/poco-build -DCMAKE_VERBOSE_MAKEFILE=ON
|
|||
|
$ cmake --build /path/to/poco-build --target all
|
|||
|
|
|||
|
|
|||
|
Some more infos about cmake see:
|
|||
|
|
|||
|
$ cmake --help-full
|
|||
|
https://cmake.org/cmake/help/latest/
|
|||
|
http://cgold.readthedocs.io/en/latest/index.html
|
|||
|
|
|||
|
|
|||
|
!!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 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 2015 (or 2017, 2019, 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 (140, 150, 160). 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.
|