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).
|
2012-10-24 22:15:56 +02:00
|
|
|
|
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.5 or newer
|
|
|
|
- A C++14 compiler (Visual C++ 2015, GCC 5.0, Clang 3.4, 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
|
|
|
|
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. 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).
|
|
|
|
|
|
|
|
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)
|
|
|
|
|
|
|
|
```
|
|
|
|
$ sudo apt-get -y update && sudo apt-get -y install git g++ make cmake libssl-dev
|
|
|
|
```
|
|
|
|
|
|
|
|
#### RedHat Linux
|
|
|
|
|
|
|
|
```
|
|
|
|
$ sudo yum install -y git gcc-c++ make cmake3 openssl-devel
|
|
|
|
```
|
|
|
|
|
|
|
|
#### macOS (with Homebrew)
|
|
|
|
|
|
|
|
```
|
|
|
|
$ brew install cmake openssl
|
|
|
|
```
|
|
|
|
|
|
|
|
### Building with CMake (Linux, macOS, Windows)
|
|
|
|
|
|
|
|
[CMake](https://cmake.org) (version 3.5 or newer) is the recommended build system for
|
|
|
|
building the POCO C++ Libraries.
|
2020-01-27 09:07:10 +01:00
|
|
|
|
|
|
|
```
|
|
|
|
$ git clone -b master https://github.com/pocoproject/poco.git
|
|
|
|
$ 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:
|
|
|
|
|
|
|
|
```
|
|
|
|
$ cmake .. -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl
|
|
|
|
```
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
2022-06-21 18:07:58 +02:00
|
|
|
#### 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.
|
|
|
|
|
|
|
|
|
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"
|