poco/README.md

196 lines
6.7 KiB
Markdown
Raw Permalink Normal View History

2018-03-07 17:35:20 +01:00
![alt text][logo]
2015-01-19 14:43:59 +01:00
Release 1.12.0 (#3676) * updated README.md * Create close-inactive-issues.yml * PocoDoc: fix iframe sandboxing * create poco-1.11.3 branch, bump version * update copyright date * #3567: check legacy provider existence for legacy exception #3567 * fix(OpenSSLInitializer): unload provider on uninitialize (#3567) * fix(OpenSSLInitializer): fix provider unloading (#3567) * fix(OpenSSLInitializer): revert unload provider on uninitialize (#3567) * fix(MySQL): MySQL UUID binding temporary string #3587 * update CI link in README.md * #3632: add overloads to ctor and connect() to allow passing a Poco::Net::StreamSocket/Poco::Net::SecureStreamSocket to enable TLS connections without introduding a direct dependency to NetSSL. * updated changelog * devel-release-1.12.0 (#3673) * Fix percent-encoded fragment modification in Poco::URI Before this commit using Poco::URI class to parse specific URIs that had percent-encoded fragment identifier resulted in the loss of information concerning the way the fragment identifier was encoded. There could be the cases when the result of Poco::URI object serialization to string did not match the original URI string Poco::URI object was created from. In this commit we change the internal logic of fragment processing in Poco::URI, so that the fragment is stored inside the class in raw form (the same way as query string). The methods getFragment and setFragment work the old way (with percent-decoded fragment values), new methods getRawFragment and setRawFragment are added to get access to the original fragment representation. * Remove SDK version from VS2022 test projects (#3607) * Remaining changes for Windows on ARM64 support (#3608) * Add ARM64 to Foundation * Changed lib, and bin folders of ARM64 builds * Updated buildwin.cmd * Added missing closing </File> tags (#3610) * feat(Platform): LoongArch support #3460 * fix(PollSet): default enable epoll on linux * default disable new state on move * fix(UDPHandler): data race #3613; clean up all Net tsan warnings * ProGen vs170 projects with Win32,x64,ARM64 (#3612) * fix(TCPServer): #1884 #1965 * fix(LogFile): LogFile_STD (LogFileImpl) fails to recover from getting out of space #2084 * Avoid clang 10 -Wimplicit-int-float-conversion warning/error when converting int into float (#2943) Example of warning (error when using -Werror) we get with clang 10: /remote/intdeliv/components/osp/Poco/Foundation/19-0-0-6/include/Poco/Dynamic/VarHolder.h:444:14: error: implicit conversion from 'int' to 'float' changes value from 2147483647 to 2147483648 [-Werror,-Wimplicit-int-float-conversion] if (from > std::numeric_limits<T>::max()) ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /remote/intdeliv/components/osp/Poco/Foundation/19-0-0-6/include/Poco/Dynamic/VarHolder.h:332:4: note: in instantiation of function template specialization 'Poco::Dynamic::VarHolder::checkUpperLimitFloat<float, int>' requested here checkUpperLimitFloat<F,T>(from); ^ /remote/intdeliv/components/osp/Poco/Foundation/19-0-0-6/include/Poco/Dynamic/VarHolder.h:2175:3: note: in instantiation of function template specialization 'Poco::Dynamic::VarHolder::convertToSmaller<float, int>' requested here convertToSmaller(_val, val); ^ * chore(ci): run ci on pull requests * #2569: Added TIMESTAMP data type support on MySQL (#3471) * Unit test for TIMESTAMP data type in MySQL. * Added support for TIMESTAMP data type. Co-authored-by: Hector Toledo Soto <hsoto@transperfect.com> * MongoDB::Array: int --> size_t in get for consistency with size(), new helper functions to add elements to an array. (#3016) * fix(CppUnit): enable_if disarm numeric notEqualsMessage * fix(CppUnit): CppUnit notEqualsMessage causing compile errors #3615 * Syslog: Include Facility to Syslog Message (#3452) * Fixed indentation * Added Facility to Message in RemoteSyslogListener * Net: make MessageHeader limits configurable (#3404) * Add Message::getAll (#3104) * chore(Message): fix formatting for #3104 * Output to stderr in Poco::WindowsConsoleChannel (#3058) - Fixes #3056 * HTTPDigestCredentials added support for RFC7616 algorithms (#3026) * chore(SHA2Engine): fix formatting for #3026 * Added support for SQLite transaction types using Session property (#3018) * chore(SQLite): fix enum names case for #3018 * fix(HTTPResponse): Add 425 / HTTP_TOO_EARLY to HTTPResponse::HTTPStatus #3592 * fix(SQLite): windows build (global var does not link) #3018 * Added missing SocketProactor class to ProGen source (#3616) * Added missing SocketProactor class to ProGen source * ProGen'd VS2022 Net project * chore(Net): regenerate VS 140,150,160 projects #3614 * Handle MariaDB JSON columns since they are stored as `longtext` (#3621) * Also extract BLOBs when reading longtext columns as std::string * Fix error message in unit test * Added unit test to read longtext columns as std::string * Use `tx_isolation` when connected to MariaDB regardless of version (#3622) * Use `tx_isolation` when connected to MariaDB regardless of version * Rename variable * Handle MariaDB server info in the middle of the string * Updated to PCRE version 8.45 (#3623) * Add missing changes from zlib update * Updated to PCRE version 8.45 Build on Win32 and Linux, RegularExpressionTest was successful * Fix/tsan (#3617) * fix(Foundation): tsan warnings fixes * fix(Thread_POSIX): tsan warnings fixes; add tsan.suppress * fix(Util): tsan fixes * fix(netSSL_OpenSSL): tsan fixes * fix(Data): tsan warnings fixes * feat(ci): add tsan job * feat(ci): add tsan job, another attempt * feat(ci): add tsan job, 3rd attempt * fix(Foundation): tsan warnings fixes * fix(Thread_POSIX): tsan warnings fixes; add tsan.suppress * fix(Util): tsan fixes * fix(netSSL_OpenSSL): tsan fixes * fix(Data): tsan warnings fixes * feat(ci): add tsan job * feat(ci): add tsan job, another attempt * feat(ci): add tsan job, 3rd attempt * fix(ResultMetadata): memory leak #3474 * feat(ci): disable ActiveDispatcher tests for tsan runs * feat(ci): try to fix tsan options file detection (again) * chore(TestLibrary: correct spelling * fix(ci): fix tsan run; add -y to apt; disable samples build for some jobs * fix(ci): add mysql ports * feat(ci): add VS asan * feat(double-conversion): Upgrade double-conversion to v3.2.0 #3624 * chore(asan): disable msvc asan build (dll not found) * chore(double-conversion): move NumericString.h before double-conversion includes to prevent min/max collision; reinstate lost loongarch64 * chore(JSON): sync pdjson with upstream * fix(Statement): Poco::Data::Statement becomes unusable after exception #2287 * added facility to SyslogChannel (#3453) * TCPServerDispatcher.h: missing <atomic> (#2961) Fixes: b8af168151fe0147fb06557029002ae226dcc549 Fixes: #1965 * Windows embedded OpenSSL: Fixed bogus warning during compilation (External OpenSSL defined but internal headers used - possible mismatch!) (#3627) * fix(double-conversion): nios2 and riscv defines * fix(double-conversion): riscv defines * fix(cmake): TestLibrary debug postfix * fix(cmake): add WebNotifier to samples #3184 * doc(Crypto): Fix error in find_package example #3088 * fix(Event): Event data race #3629 * fix(AsyncChannel): race condition in AsyncChannel close/log #1039 * fix(Zip): Zip 64-bit extensions not set #2590 (tentative) (#3604) * PocoDoc: fix handling of font-style tags if tag is immediately followed by punctuation * Static code analyzer warnings #2688 * MinGW: fatal error: kernelspecs.h: No such file #2691 * Poco::Data::SessionPool change connection timeout #3241 * Makefile: space(s) following target name will break build (during link) #3062 * json format PrintHandler #2678 * indicate compiler that functions will never return (#3639) * fix warning C4717: 'format<std::vector<std::any,std::allocatorstd::an… (#3640) * fix warning C4717: 'format<std::vector<std::any,std::allocatorstd::any > >': recursive on all control paths, function will cause runtime stack overflow * keep origin format. * fix(format): scope * fix(Crypto): libPocoCrypto.so: undefined reference to pthread_atfork when linking statically with OpenSSL 1.1 #3073 * chore(LocalConfigurationView): fix style #3529 * fix(ConfigurationView): ConfigurationView and JSON is broken for array access #3635 * FifoBuffer.advance method not throw exception when length==0 (#3641) * fifobuffer not throw error when length = 0 * Update FIFOBuffer.h fix indentation Co-authored-by: Aleksandar Fabijanic <aleks-f@users.noreply.github.com> * fix(URI): Decoding URI query parameters ( ::getQueryParameters) incompatible with Spring 5 #2619 * fix(NTPClient): NTPClient ignores second fractions #2614 * chore(JSON): add test for #2612 * fix(Platform): MinGW also defines __GNUC__. #3195 * Fix some clang 10 -Wsign-compare warnings (#2960) In file included from /data/mwrep/res/osp/Poco/JSON/20-0-0-0/include/Poco/JSON/Object.h:22: In file included from /data/mwrep/res/osp/Poco/JSON/20-0-0-0/include/Poco/JSON/Array.h:23: In file included from /data/mwrep/res/osp/Poco/Foundation/20-0-0-0/include/Poco/Dynamic/Var.h:26: In file included from /data/mwrep/res/osp/Poco/Foundation/20-0-0-0/include/Poco/Dynamic/VarHolder.h:22: In file included from /data/mwrep/res/osp/Poco/Foundation/20-0-0-0/include/Poco/NumberFormatter.h:22: /data/mwrep/res/osp/Poco/Foundation/20-0-0-0/include/Poco/NumericString.h:220:31: error: comparison of integers of different signs: 'unsigned long' and 'char' [-Werror,-Wsign-compare] if ((limitCheck - result) < add) return false; ~~~~~~~~~~~~~~~~~~~ ^ ~~~ /data/mwrep/res/osp/Poco/Foundation/20-0-0-0/include/Poco/NumericString.h:229:31: error: comparison of integers of different signs: 'unsigned long' and 'char' [-Werror,-Wsign-compare] if ((limitCheck - result) < add) return false; ~~~~~~~~~~~~~~~~~~~ ^ ~~~ /data/mwrep/res/osp/Poco/Foundation/20-0-0-0/include/Poco/NumericString.h:240:31: error: comparison of integers of different signs: 'unsigned long' and 'char' [-Werror,-Wsign-compare] if ((limitCheck - result) < add) return false; ~~~~~~~~~~~~~~~~~~~ ^ ~~~ /data/mwrep/res/osp/Poco/Foundation/20-0-0-0/include/Poco/NumericString.h:249:31: error: comparison of integers of different signs: 'unsigned long' and 'char' [-Werror,-Wsign-compare] if ((limitCheck - result) < add) return false; ~~~~~~~~~~~~~~~~~~~ ^ ~~~ 4 errors generated. * chore(README): Add vcpkg installation instructions #2940 * fix(SQLite): SQLite::Connector::open() crashes on db file with non existing directory #2285 * fix(MailMessage): read hangs on missing final multipart boundary #2401 * fix(NumberParser): Rounds very large negative numbers to the incorrect values #3580 * fix(JSON::Stringifier): JSON Serializing NAN #3251 * feat(Timespan): Add std::chrono support #2576 #2623 * fix(strToInt): overflows #3580 * fix(strToInt): thousand separator regression #3580 * fix(MySQL::Extractor): MySQL Extractor #2521 * feat(FTPClientSession): activeDataConnection 1.11.0 cannot set specific data port #3372 * feat(Cipher): No access to padding in Cipher #3374 * feat(TypeHandler): DB into() does not compile for more than 20 members in a tuple #3342 * fix(NumberFormatter): Negative precision in NumberFormatter::format() #2511 * Make ParallelSocketReactor thread namable (#3642) make ParallelSocketReactor thread namable * fix(Redis): Poco::Redis after executing auth command next command always return OK #2457 * chore(NumberParserTest): add test for #2441 * avoid clang tidy warning (#3646) * Revert "avoid clang tidy warning (#3646)" (#3648) This reverts commit b23488d6feab13645ce306fd02fd50635f54b25f. * fix(VarHolder): limits check * As of C++11, std::swap is noexcept. #2386 (#3645) * As of C++11, std::swap is noexcept. #2386 * fix(Any): remove throw on swap * fix(Any): As of C++11, std::swap is noexcept. #2386 * fix(Any): make size const #2386 * fix(SimpleRowFormatter): clang won't compile noexcept #2386 * a couple of arm fixes * fix(Any): As of C++11, std::swap is noexcept. #2386 * fix(AnyTest): local() for POCO_NO_SOO# 2386 * test(RSACipher): RSA encryption without private key #2367 * chore(RSACipherTest): delete ciphers #2367 * add separate accessors and mutators for connect, send and receive tim… (#3476) * add separate accessors and mutators for connect, send and receive timeouts * implement timeout methods outside of class declaration to conform to existing code structure * Update HTTPSession.h Co-authored-by: bfoster <bfoster@malwarebytes.com> Co-authored-by: Aleksandar Fabijanic <aleks-f@users.noreply.github.com> * Make poll set interruptable (#3644) * Make poll set interruptable * open test for poll set * fix poll set wake up test * fix build error * feat(SecureSocketImpl): how to set the socket of SecureSocketImpl to no-blocking? #2352 * better socket reactor wake up (#3647) * better socket reactor wake up * Remove documentation comment from source file Co-authored-by: Aleksandar Fabijanic <aleks-f@users.noreply.github.com> * test(MailMesage): MailMessage::read() chokes on Content-disposition #3650 * chore(Net/samples): tcpserver missing from Net/samples/CMakeLists.txt #3651 * fix(CMake): Linking with Foundation on Android gives error #3652 #3653 * #2821: Poco::Buffer: full on creation? - add documentation describing the behavior. * add note regarding receiveFrame with Poco::Buffer * merge changes from 1.11.3 * #3633: Redis: Support Authentication * #3658: Support for chunked transfer encoding trailer * formatHex with lower case (#3657) * feat(Socket): add lastErrorDesc() * fix(Socket): Socket::select EPOLL implementation returns socket in exceptList when empty list is given #3655; mark select as deprecated #1459 * Fix/poll set race (#3630) * fix(PollSet): PollSet data race #3628 * fix(SocketConnector): SocketConnector test #2875 * fix(PollSet): optimize the amount of locked code; fix and simplify wakeUp logic * fix(SocketConnectorTest): fix test memleak (data not flowing, handlers not deleted) #2875 * fix(PollSet): clear() and tests * fix(PollSet): #1459 #3628 #3655 #3661 * fix(PollSet): Integrate windows epoll #2091, #3649 * chore(ProGen): MSVC does not properly recognize std version #3665 * fix(PollSet): eventfd call arg; add wepoll to CMakelists.txt * fix(PollSet): CMakelists.txt * fix(cmake): MSVC does not properly recognize std version #3665 * chore(vscode): add mac config * fix(PollSet): PollSet::add()/update() semantics #3661 * Feat/pcre2 (#3663) * upgrade to pcre2 * use pcre2_*_8 names * fix pcre2 lib name for unbundled build * CMake changes for PCRE2 * add missing macro for unbundled build * add PCRE2_STATIC * updated VS project files for pcre2 Co-authored-by: Günter Obiltschnig <guenter.obiltschnig@appinf.com> * Revert "formatHex with lower case (#3657)" (#3670) This reverts commit b1823b61c0902252d1e15e8a7175f40e31a865b2. * Always set thread names on POSIX platforms (#3384) * chore: gitignore vim .swp files * feat(POSIX): Always set thread names. I'm not sure about the original intent to hide it under a DEBUG macro. Naming the threads in release mode makes it easier to see runtime application and know which thread pool uses how many threads and what their names are. Firefox, Chromium and many other apps do this on Linux. * Remove trailing whitespace (#3668) * doc: update CHANGLEOG Co-authored-by: Daniil Zotkin <zotkin@rutoken.ru> Co-authored-by: Hernan Martinez <hernan.c.martinez@gmail.com> Co-authored-by: Romain Geissler @ Amadeus <romain.geissler@amadeus.com> Co-authored-by: hectots <monkey.instinct@gmail.com> Co-authored-by: Hector Toledo Soto <hsoto@transperfect.com> Co-authored-by: Matej Kenda <matejken@gmail.com> Co-authored-by: BeBinder <93721965+BeBinder@users.noreply.github.com> Co-authored-by: Tavi Cacina <tavi-cacina@users.noreply.github.com> Co-authored-by: Mathieu Stefani <m.stefani@abc-arbitrage.com> Co-authored-by: Fritz Elfert <fritz@fritz-elfert.de> Co-authored-by: Maksim Kita <kitaetoya@gmail.com> Co-authored-by: Spaky <Spaky@users.noreply.github.com> Co-authored-by: Azat Khuzhin <a3at.mail@gmail.com> Co-authored-by: Matej Kenda <matej.kenda@topit.si> Co-authored-by: Günter Obiltschnig <guenter.obiltschnig@appinf.com> Co-authored-by: Guillermo Frontera <gfrontera86@gmail.com> Co-authored-by: junwufan <shelllet.com@gmail.com> Co-authored-by: JackyWoo <wuchienchao@qq.com> Co-authored-by: Ben Foster <bfoster7593@gmail.com> Co-authored-by: bfoster <bfoster@malwarebytes.com> Co-authored-by: Arun Chandrasekaran <arun@paravision.ai> Co-authored-by: John Vandenberg <jayvdb@gmail.com> Co-authored-by: Günter Obiltschnig <guenter.obiltschnig@appinf.com> Co-authored-by: Daniil Zotkin <zotkin@rutoken.ru> Co-authored-by: Hernan Martinez <hernan.c.martinez@gmail.com> Co-authored-by: Romain Geissler @ Amadeus <romain.geissler@amadeus.com> Co-authored-by: hectots <monkey.instinct@gmail.com> Co-authored-by: Hector Toledo Soto <hsoto@transperfect.com> Co-authored-by: Matej Kenda <matejken@gmail.com> Co-authored-by: BeBinder <93721965+BeBinder@users.noreply.github.com> Co-authored-by: Tavi Cacina <tavi-cacina@users.noreply.github.com> Co-authored-by: Mathieu Stefani <m.stefani@abc-arbitrage.com> Co-authored-by: Fritz Elfert <fritz@fritz-elfert.de> Co-authored-by: Maksim Kita <kitaetoya@gmail.com> Co-authored-by: Spaky <Spaky@users.noreply.github.com> Co-authored-by: Azat Khuzhin <a3at.mail@gmail.com> Co-authored-by: Matej Kenda <matej.kenda@topit.si> Co-authored-by: Guillermo Frontera <gfrontera86@gmail.com> Co-authored-by: junwufan <shelllet.com@gmail.com> Co-authored-by: JackyWoo <wuchienchao@qq.com> Co-authored-by: Ben Foster <bfoster7593@gmail.com> Co-authored-by: bfoster <bfoster@malwarebytes.com> Co-authored-by: Arun Chandrasekaran <arun@paravision.ai> Co-authored-by: John Vandenberg <jayvdb@gmail.com>
2022-07-08 18:31:16 +02:00
[![poco-ci](https://github.com/pocoproject/poco/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/pocoproject/poco/actions/workflows/ci.yml)
2018-03-07 17:35:20 +01:00
[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/370/badge)](https://bestpractices.coreinfrastructure.org/projects/370)
2015-01-19 14:43:59 +01:00
2016-03-12 16:42:25 +01:00
2020-01-27 09:07:10 +01:00
### POCO (Portable Components) C++ Libraries are:
2018-03-08 10:55:58 +01:00
2020-01-27 09:07:10 +01:00
- A collection of C++ class libraries, conceptually similar to the Java Class Library or the .NET Framework.
2013-06-05 06:16:05 +02:00
- Focused on solutions to frequently-encountered practical problems.
2020-01-27 09:07:10 +01:00
- Focused on "internet-age" network-centric applications.
2013-06-05 06:16:05 +02:00
- Written in efficient, modern, 100% ANSI/ISO Standard C++.
- Based on and complementing the C++ Standard Library/STL.
2017-11-10 14:14:19 +01:00
- Highly portable and available on many different platforms, from embedded to server.
2016-03-12 16:42:25 +01:00
- Open Source, licensed under the [Boost Software License](https://spdx.org/licenses/BSL-1.0).
2018-03-07 17:35:20 +01:00
![alt text][overview]
2017-11-10 14:14:19 +01:00
To start using POCO, see the [Guided Tour](https://pocoproject.org/docs/00100-GuidedTour.html)
and [Getting Started](https://pocoproject.org/docs/00200-GettingStarted.html) documents.
2014-10-14 03:26:02 +02:00
2020-01-27 09:07:10 +01:00
## Quick Start (with CMake)
### Prerequisites
- CMake 3.15 or newer
- A C++17 compiler (Visual C++ 2017, GCC 8.0, Clang 5, or newer)
2020-01-27 09:25:45 +01:00
- OpenSSL headers and libraries (optional, but recommended)
- MySQL, PostgreSQL and ODBC client libraries (optional)
2020-01-27 09:07:10 +01:00
2020-01-27 09:25:45 +01:00
Most Unix/Linux systems already have OpenSSL preinstalled. If your system
2024-04-03 17:21:05 +02:00
does not have OpenSSL, please get it from <https://www.openssl.org> or
2020-01-27 09:25:45 +01:00
another source. You do not have to build OpenSSL yourself - a binary
distribution is fine. For example, via Debian APT:
```
$ apt-get install openssl libssl-dev
```
On macOS, the easiest way to install OpenSSL is via [Homebrew](https://brew.sh):
```
$ brew install openssl
```
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](https://www.slproweb.com/products/Win32OpenSSL.html).
2024-04-03 17:21:05 +02:00
OpenSSL can also be installed via the `vcpkg` package manager.
2020-01-27 09:25:45 +01:00
On Windows, POCO can also use the native Windows TLS APIs (SChannel).
### Installing All Dependencies (Linux and macOS)
All dependencies can be installed with the following commands:
#### Debian Linux (including Ubuntu and Raspbian)
```
2024-04-03 17:21:05 +02:00
$ sudo apt-get -y update && sudo apt-get -y install git g++ make cmake libssl-dev libmysqlclient-dev libpq-dev
2020-01-27 09:25:45 +01:00
```
#### RedHat Linux
```
2024-04-03 17:21:05 +02:00
$ sudo yum install -y git gcc-c++ make cmake3 openssl-devel mysql-devel postgresql-devel
2020-01-27 09:25:45 +01:00
```
#### macOS (with Homebrew)
```
2024-04-03 17:21:05 +02:00
$ brew install cmake openssl mysql-client libpq
2020-01-27 09:25:45 +01:00
```
### Building with CMake (Linux, macOS, Windows)
[CMake](https://cmake.org) (version 3.15 or newer) is the recommended build system for
2020-01-27 09:25:45 +01:00
building the POCO C++ Libraries.
2020-01-27 09:07:10 +01:00
```
2024-04-17 20:37:49 +02:00
$ git clone -b main https://github.com/pocoproject/poco.git
2020-01-27 09:07:10 +01:00
$ cd poco
$ mkdir cmake-build
$ cd cmake-build
2020-01-27 09:25:45 +01:00
$ cmake ..
$ cmake --build . --config Release
```
On macOS, it's necessary to tell CMake where to find the OpenSSL headers
and libraries by setting the `OPENSSL_ROOT_DIR` CMake variable.
For example, if OpenSSL has been installed with Homebrew,
the `cmake` invocation becomes:
```
2024-04-03 17:21:05 +02:00
$ cmake .. -DOPENSSL_ROOT_DIR=/opt/homebrew/opt/openssl@3
```
Similarly, the locations of other external libraries can be specified:
```
$ cmake .. -DOPENSSL_ROOT_DIR=/opt/homebrew/opt/openssl@3 -DMYSQL_ROOT_DIR=/opt/homebrew/opt/mysql-client -DPostgreSQL_ROOT_DIR=/opt/homebrew/opt/libpq
2020-01-27 09:25:45 +01:00
```
Other common ways of building with CMake (e.g., `cmake-gui`) will also work.
There are also a number of project-specific CMake variables that can be changed.
#### Cross-Compiling
With a proper CMake toolchain file (specified via the `CMAKE_TOOLCHAIN_FILE` CMake variable),
the POCO C++ Libraries can be cross-compiled for embedded Linux systems:
2020-01-27 09:07:10 +01:00
```
2020-01-27 09:25:45 +01:00
$ cmake .. -DCMAKE_TOOLCHAIN_FILE=/path/to/mytoolchain.cmake -DCMAKE_INSTALL_PREFIX=/path/to/target
```
#### Installing
2020-01-27 09:07:10 +01:00
2020-01-27 09:25:45 +01:00
The POCO C++ Libraries headers and libraries can be optionally be installed by building the `install` target.
2020-01-27 09:07:10 +01:00
```
$ sudo cmake --build . --target install
```
2020-01-27 09:25:45 +01:00
The default install location is `/usr/local/` on Linux and macOS and
`C:\Program Files (x64)\` on Windows and can be overridden by setting
the `CMAKE_INSTALL_PREFIX` CMake variable.
#### Building and Installing - Using vcpkg
You can download and install poco using the [vcpkg](https://github.com/Microsoft/vcpkg) dependency manager:
```
$ git clone https://github.com/Microsoft/vcpkg.git
$ cd vcpkg
$ ./bootstrap-vcpkg.sh
$ ./vcpkg integrate install
$ ./vcpkg install poco
```
The poco port in vcpkg is kept up to date by Microsoft team members and community contributors.
If the version is out of date, please [create an issue or pull request](https://github.com/Microsoft/vcpkg)
on the vcpkg repository.
2024-04-03 17:21:05 +02:00
#### Building and Installing - Using Conan
You can download and install poco using the Conan(https://github.com/conan-io/conan)
package manager. It needed to be installed first(https://conan.io/downloads.html):
You can install Poco libraries from Conan Center(https://conan.io/center.html):
$ conan install -r conancenter poco/1.12.0@
Or, you can download Poco recipe and build locally:
$ conan install -r conancenter poco/1.12.0@ --build=poco
The Poco recipe and packages in Conan Center are kept up to date by Conan team members and community contributors.
If the version is out of date, or you detect any wrong behavior, please create an issue or pull request(https://github.com/conan-io/conan-center-index)
on the Conan Center Index repository.
2020-01-27 09:25:45 +01:00
### Building Without CMake
2020-01-27 09:07:10 +01:00
If you do not want to or cannot use CMake, POCO can also be built with Visual Studio
2020-01-27 09:25:45 +01:00
(project and solution files included) or GNU Make (Linux, macOS and other supported Unix platforms).
2020-01-27 09:07:10 +01:00
Please refer to the [documentation](https://pocoproject.org/docs) for more information.
2020-01-27 09:25:45 +01:00
### Getting POCO via a Package Manager
2020-01-27 09:07:10 +01:00
POCO can also be obtained via different [package managers](https://pocoproject.org/download.html).
2020-01-27 09:25:45 +01:00
2020-01-27 09:07:10 +01:00
## Community and Contributing
POCO has an active user and contributing community, please visit our [website](https://pocoproject.org) and [blog](https://pocoproject.org/blog).
2016-09-13 07:42:41 +02:00
Answers to POCO-related questions can also be found on [Stack Overflow](https://stackoverflow.com/questions/tagged/poco-libraries).
Please see [CONTRIBUTING](CONTRIBUTING.md) for submitting contributions, bugs reports, feature requests or security issues.
2013-06-05 06:16:05 +02:00
2020-01-27 09:07:10 +01:00
### POCO vs. Boost
2014-10-14 03:26:52 +02:00
In regards to Boost, in spite of some functional overlapping,
POCO is best thought of as a Boost complement (rather than replacement).
2016-03-12 16:42:25 +01:00
Side-by-side use of Boost and POCO is a very common occurrence.
2013-06-05 06:16:05 +02:00
2018-03-08 10:55:58 +01:00
[overview]: doc/images/overview.png "Poco Overview"
[logo]: doc/images/logo.png "Poco Logo"