mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-18 20:32:43 +00:00
341 lines
14 KiB
Plaintext
341 lines
14 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.*>
|
|||
|
|
|||
|
|
|||
|
!!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/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 (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
|
|||
|
|
|||
|
Most Unix/Linux systems (including Mac OS X) 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.
|
|||
|
|
|||
|
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. 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]]
|
|||
|
(preinstalled on Mac OS X) 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 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, 2010 and 2012, 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/2005/2008/2010 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 (71, 80, 90, 100 or 110). 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).
|
|||
|
|
|||
|
Visual Studio Express builds have limited support. In particular, the
|
|||
|
coupling of the TesTSuite with MFC on Windows is the obstacle for clean
|
|||
|
ful VS Express builds. There are plans to alleviate this in the future
|
|||
|
relalses.
|
|||
|
|
|||
|
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/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 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 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 <*<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
|
|||
|
----
|
|||
|
|
|||
|
!!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).
|
|||
|
|
|||
|
|
|||
|
!!!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.
|