{"id":13435436,"url":"https://github.com/pocoproject/poco","last_synced_at":"2025-05-14T11:04:37.077Z","repository":{"id":5201086,"uuid":"6376337","full_name":"pocoproject/poco","owner":"pocoproject","description":"The POCO C++ Libraries are powerful cross-platform C++ libraries for building network- and internet-based applications that run on desktop, server, mobile, IoT, and embedded systems.","archived":false,"fork":false,"pushed_at":"2025-05-02T19:36:20.000Z","size":164312,"stargazers_count":8987,"open_issues_count":150,"forks_count":2264,"subscribers_count":414,"default_branch":"main","last_synced_at":"2025-05-07T10:52:30.750Z","etag":null,"topics":["c-plus-plus","configuration","cross-platform","database-access","http-client","http-server","json","logging","mongodb-client","networking","poco","redis-client","sql","xml"],"latest_commit_sha":null,"homepage":"https://pocoproject.org","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pocoproject.png","metadata":{"files":{"readme":"README","changelog":"CHANGELOG","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2012-10-24T19:39:16.000Z","updated_at":"2025-05-07T02:42:23.000Z","dependencies_parsed_at":"2023-02-18T17:01:08.599Z","dependency_job_id":"3e2d76bd-2031-43ea-aaf3-a89a2623ce25","html_url":"https://github.com/pocoproject/poco","commit_stats":{"total_commits":5164,"total_committers":251,"mean_commits":"20.573705179282868","dds":0.6020526723470179,"last_synced_commit":"bc29f30e5cf035e860b3d2c1fc5df570f01513ea"},"previous_names":[],"tags_count":72,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pocoproject%2Fpoco","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pocoproject%2Fpoco/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pocoproject%2Fpoco/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pocoproject%2Fpoco/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pocoproject","download_url":"https://codeload.github.com/pocoproject/poco/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254129474,"owners_count":22019628,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c-plus-plus","configuration","cross-platform","database-access","http-client","http-server","json","logging","mongodb-client","networking","poco","redis-client","sql","xml"],"created_at":"2024-07-31T03:00:35.678Z","updated_at":"2025-05-14T11:04:37.000Z","avatar_url":"https://github.com/pocoproject.png","language":"C","readme":"This is the README file for the POCO C++ Libraries.\n\nIn this document you will find a brief description of the directory layout,\nas well as a description necessary steps to build the POCO C++ Libraries.\n\nThe Foundation library contains a platform abstraction layer (including classes\nfor multithreading, file system access, logging, etc.), as well as\na large number of useful utility classes, such various stream buffer and stream\nclasses, URI handling, and many more.\nThe XML library contains an XML parser with SAX2 and DOM interfaces,\nas well as an XMLWriter.\nThe Util library contains classes for working with configuration files and\ncommand line arguments, as well as various utility classes.\nThe Net library contains network classes (sockets, HTTP client/server, etc.).\nAll libraries come with a test suite and a number of sample programs.\n\nThe basic directory layout is as follows:\n\nbuild/                     the build system for Unix and additional utility scripts\n    config/                build configurations for various Unix platforms\n    rules/                 common build rules for all platforms\n    scripts/               build and utility scripts\n    vxconfig/              VxWorks build configurations\n\ncmake/                     Support files for CMake\n\nbin/                       all executables (dynamic link libraries on Windows)\nbin64/                     64-bit executables (and DLLs) on Windows\n\ndoc/                       additional documentation\n\nlib/                       all libraries (import libraries on Windows)\nlib64/                     64-bit libraries on Windows\n\nCppUnit/                   project and make/build files for the CppUnit unit testing framework\n    doc/                   additional documentation\n    include/\n        CppUnit/           header files for CppUnit\n    src/                   source files for CppUnit\n    WinTestRunner/         Windows GUI for CppUnit\n\nFoundation/                project and make/build files for the Foundation library\n    include/\n        Poco/              header files for the Foundation library\n    src/                   source files for the Foundation library\n    testsuite/             project and make/build files for the Foundation testsuite\n              src/         source files for the Foundation testsuite\n              bin/         test suite executables\n    samples/               sample applications for the Foundation library\n\nXML/                       project and make/build files for the XML library\n    include/\n        Poco/\n            XML/           header files for the core XML library\n            SAX/           header files for SAX support\n            DOM/           header files for DOM support\n    src/                   source files for the XML library\n    testsuite/             project and make/build files for the XML testsuite\n              src/         source files for the XML testsuite\n              bin/         test suite executables\n    samples/               sample applications for the XML library\n\nNet/                       project and make/build files for the Net library\n    include/\n        Poco/\n            Net/           header files for the Net library\n    src/                   source files for the Net library\n    testsuite/             project and make/build files for the Net testsuite\n              src/         source files for the Net testsuite\n              bin/         test suite executables\n    samples/               sample applications for the Net library\n\n\nDepending on what package you have downloaded, there may be other libraries\nas well (such as Data, Crypto, NetSSL_OpenSSL and Zip).\n\n\nDOCUMENTATION\n=============\n\nPlenty of documentation (tutorial slides, articles and SDK reference)\nis available at \u003chttps://docs.pocoproject.org/\u003e.\n\n\nEXTERNAL DEPENDENCIES\n=====================\n\nThe following libraries require third-party software (header files and\nlibraries) being installed to build properly:\n\n- NetSSL_OpenSSL, Crypto and JWT require OpenSSL.\n- Data/ODBC requires ODBC\n  (Microsoft ODBC on Windows, unixODBC or iODBC on Unix/Linux)\n- Data/MySQL requires the MySQL or MariaDB client library.\n- Data/PostgreSQL requires the PostgreSQL client library (libpq).\n\nMost Unix/Linux systems already have OpenSSL preinstalled. If your system\ndoes not have OpenSSL, please get it from https://www.openssl.org or\nanother source. You do not have to build OpenSSL yourself - a binary\ndistribution is fine (e.g., apt-get install openssl libssl-dev).\nOn macOS, install OpenSSL via Homebrew (brew install openssl).\nOn Windows, OpenSSL can be installed with vcpkg.\n\nThe easiest way to install OpenSSL on Windows is to get the pre-built\nlibraries from the pocoproject/openssl Git repository at\n\u003chttps://github.com/pocoproject/openssl\u003e. This repository is included\nas a submodule in the poco GitHub repository, but not in the release\nsource code packages. You can also provide your own OpenSSL build by\nediting the Visual Studio project files.\n\nDepending on where you have installed the OpenSSL libraries,\nyou might have to edit the build script (buildwin.cmd), or add the\nnecessary paths to the INCLUDE and LIB environment variables.\n\nThe Data library requires ODBC support on your system if you want\nto build the ODBC connector (which is the default). On Windows\nplatforms, ODBC should be readily available if you have the\nWindows SDK. On Unix/Linux platforms, you can use iODBC\n(preinstalled on macOS X) or unixODBC. For the MySQL connector,\nthe MySQL client libraries and header files are required.\n\nThe Data/ODBC and Data/MySQL Makefiles will search for the ODBC\nand MySQL headers and libraries in various places. Nevertheless,\nthe Makefiles may not be able to find the headers and libraries.\nIn this case, please edit the Makefile in Data/ODBC and/or Data/MySQL\naccordingly.\n\n\nBUILDING WITH CMAKE\n===================\n\nThe POCO C++ Libraries support CMake as a build system on Linux, macOS and Windows.\nTo build the POCO C++ Libraries with CMake:\n\n1. create a cmake-build directory (e.g. in the POCO root directory):\n\n$ mkdir cmake-build\n\n2. and run CMake from there:\n\n$ cd cmake-build\n$ cmake ..\n$ make -s -j (or build the generated Visual Studio solution on Windows)\n\nIf you cannot or do not want to build with CMake, there are other options,\ndescribed in the following.\n\n\nBUILDING - USING VCPKG\n======================\n\nYou can download and install poco using the vcpkg (https://vcpkg.io)\ndependency manager:\n\n$ git clone https://github.com/Microsoft/vcpkg.git\n$ cd vcpkg\n$ ./bootstrap-vcpkg.sh\n$ ./vcpkg integrate install\n$ ./vcpkg install poco\n\nThe Poco port in vcpkg is kept up to date by Microsoft team members and community contributors.\nIf the version is out of date, please create an issue or pull request(https://github.com/Microsoft/vcpkg)\non the vcpkg repository.\n\n\nBUILDING - USING CONAN\n======================\n\nYou can download and install poco using the Conan(https://github.com/conan-io/conan)\npackage manager. It needed to be installed first(https://conan.io/downloads.html):\n\nYou can install Poco libraries from Conan Center(https://conan.io/center.html):\n\n$ conan install -r conancenter poco/1.13.3@\n\nOr, you can download Poco recipe and build locally:\n\n$ conan install -r conancenter poco/1.13.3@ --build=poco\n\nThe Poco recipe and packages in Conan Center are kept up to date by Conan team members and community contributors.\nIf 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)\non the Conan Center Index repository.\n\n\nBUILDING ON WINDOWS\n===================\n\nMicrosoft Visual Studio 2019 or newer is required to build the POCO C++ Libraries on\nWindows platforms. Solution and project files for Visual Studio 2019 to 2022 are included.\n64-bit (x64) builds are supported as well.\nYou can either build from within Visual Studio (Build-\u003eBatch Build-\u003eSelect All;Rebuild)\nor from the command line. To build from the command line, start the\nDeveloper PowerShell for Visual Studio and cd to the directory where you\nhave extracted the POCO C++ Libraries sources. Then, run the buildwin.ps1 script\nand pass the desired options.\n\nTo show available options, run:\n\n\u003e buildwin.ps1 -help\n\nExample:\n\n\u003e buildwin.ps1 -vs 170 -action build -linkmode shared -config release -platform x64 -samples -tests\n\nCertain libraries, like NetSSL_OpenSSL, Crypto or Data/MySQL have dependencies\nto other libraries. The Visual Studio project files have been configured to\nuse vcpkg to install the required packages.\n\nIn order to run the test suite and the samples, the top-most bin directory containing\nthe shared libraries must be in the PATH environment variable.\n\nIMPORTANT NOTE: Please make sure that the path to the directory containing the\nPOCO C++ Libraries source tree does not contain spaces. Otherwise, the Microsoft\nmessage compiler may fail when building the Foundation library.\n\n\nBUILDING ON UNIX/LINUX/macOS\n============================\n\nFor building on Unix platforms, the POCO C++ Libraries come with their own\nbuild system. The build system is based on GNU Make 5.0 (or newer), with the help\nfrom a few shell scripts. If you do not have GNU Make 5.0 (or later) installed on\nyour machine, you will need to download it from\nhttp://directory.fsf.org/devel/build/make.html\u003e,\nbuild and install it prior to building the POCO C++ Libraries.\n\nYou can check the version of GNU Make installed on your system with\n\n\u003e make --version\n\nor\n\n\u003e gmake --version\n\nOnce you have GNU Make up and running, the rest is quite simple.\nTo extract the sources and build all libraries, testsuites and samples, simply\n\n\u003e gunzip poco-X.Y.tar.gz\n\u003e tar -xf poco-X.Y.tar\n\u003e cd poco-X.Y\n\u003e ./configure\n\u003e make -s\n\nSee the configure script source for a list of possible options.\nFor starters, we recommend --no-tests and --no-samples, to reduce build times.\nOn a multicore or multiprocessor machine, use parallel makes to speed up\nthe build (make -j4).\n\nOnce you have successfully built POCO, you can install it\nto /usr/local (or another directory specified as parameter\nto configure --prefix=\u003cpath\u003e):\n\n\u003e sudo make -s install\n\nYou can omit certain components from the build. For example, you might\nwant to omit Data/ODBC or Data/MySQL if you do not have the corresponding\nthird-party libraries (iodbc or unixodbc, mysqlclient) installed\non your system. To do this, use the --omit argument to configure:\n\n\u003e ./configure --omit=Data/ODBC,Data/MySQL\n\n\nIMPORTANT: Make sure that the path to the build directory does not\ncontain symbolic links. Furthermore, on macOS (or other systems\nwith case insensitive filesystems), make sure that the characters in\nthe path have the correct case. Otherwise you'll get an error saying\n\"Current working directory not under $PROJECT_BASE.\".\n\n\nBUILDING ON QNX NEUTRINO\n========================\n\nFor QNX Neutrino, the Unix build system (see the instructions above) is used.\nYou can use the build system to cross-compile for a target platform on a Solaris or\nLinux host. Unfortunately, the Cygwin-based Windows host environment has some major\nquirks that prevent the build system from working there. You can also use the\nbuild system on a self-hosted QNX system. The default build configuration for QNX\n(found in build/config/QNX) is for a self-hosted x86 platform. To specify another\ntarget, edit the CCVER setting in the build configuration file. For example, to\ncompile for a PowerPC target, specify CCVER=3.3.1,gcc_ntoppcbe.\n\nService Pack 1 for QNX Neutrino 6.3 must be installed, otherwise compiling the\nFoundation library will fail due to a problem with the \u003clist\u003e header in the\ndefault (Dinkumware) C++ standard library.\n\nWhen building on QNX, you might want to disable NetSSL_OpenSSL, Crypto and\nsome Data connectors, unless you have the necessary third party components\navailable:\n\n\u003e ./configure --omit=NetSSL_OpenSSL,Crypto,Data/ODBC,Data/MySQL\n\n\nBUILDING FOR VXWORKS\n====================\n\nPlease see the VxWorks Platform Notes in the Reference Documentation for\nmore information. The Reference Documentation can be found online\nat \u003chttp://pocoproject.org/docs/\u003e.\n\n\nMORE INFORMATION\n================\n\nFor more information, see the POCO C++ Libraries website\nat \u003chttps://pocoproject.org\u003e.\n","funding_links":[],"categories":["C++","HarmonyOS","C","Networking Libraries/Frameworks in Server Side","Networking","c-plus-plus","Projects","Framework and Libraries"],"sub_categories":["Windows Manager","UI Test Automation Scripting","Utilities","Network"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpocoproject%2Fpoco","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpocoproject%2Fpoco","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpocoproject%2Fpoco/lists"}