mirror of
				https://github.com/pocoproject/poco.git
				synced 2025-10-25 18:22:59 +02: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.
 | 
