mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2024-11-08 00:37:15 +01:00
4a6bfc086c
Switched to POCO library for unified platform/library interface. Deprecated the external module API. It was creating more problems than solving. Removed most built-in libraries in favor of system libraries for easier maintenance. Cleaned and secured code with help from static analyzers.
274 lines
11 KiB
Plaintext
274 lines
11 KiB
Plaintext
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 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, 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 <http://pocoproject.org/documentation/>.
|
|
|
|
|
|
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).
|
|
On macOS, install OpenSSL via Homebrew (brew install openssl).
|
|
|
|
The easiest way to install OpenSSL on Windows is to get the pre-built
|
|
libraries from the pocoproject/openssl Git repository at
|
|
<https://github.com/pocoproject/openssl>. This repository is included
|
|
as a submodule in the poco GitHub repository, but not in the release
|
|
source code packages. You can also provide your own OpenSSL build by
|
|
editing the Visual Studio project files.
|
|
|
|
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.
|
|
|
|
Through the Poco/Crypto/Crypto.h and Poco/Net/NetSSL.h header files,
|
|
Visual C++ will automatically link the libcrypto.lib and libssl.lib
|
|
libraries. If your OpenSSL libraries are named differently, compile
|
|
with the macro POCO_EXTERNAL_OPENSSL defined and edit the project
|
|
files accordingly.
|
|
|
|
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 macOS 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 WITH CMAKE
|
|
===================
|
|
|
|
The POCO C++ Libraries support CMake as a build system on Linux, macOS and Windows.
|
|
To build the POCO C++ Libraries with CMake:
|
|
|
|
1. create a cmake-build directory (e.g. in the POCO root directory):
|
|
|
|
$ mkdir cmake-build
|
|
|
|
2. and run CMake from there:
|
|
|
|
$ cd cmake-build
|
|
$ cmake ..
|
|
$ make -s -j (or build the generated Visual Studio solution on Windows)
|
|
|
|
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 2015 or newer is required to build the POCO C++ Libraries on
|
|
Windows platforms. Solution and project files for all versions from 2015 to 2019 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 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 (140, 150, 160, etc.). 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 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 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=<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
|
|
|
|
|
|
BUILDING FOR VXWORKS
|
|
====================
|
|
|
|
Please see the VxWorks Platform Notes in the Reference Documentation for
|
|
more information. The Reference Documentation can be found online
|
|
at <http://pocoproject.org/docs/>.
|
|
|
|
|
|
MORE INFORMATION
|
|
================
|
|
|
|
For more information, see the POCO C++ Libraries website
|
|
at <http://pocoproject.org>.
|