Description
Poac is a package manager for C++ users.
Poac can download project's dependencies and compile a project. Please see poac.pm, installation instructions, and The Poac Book for more details.
Demo
By using Poac, you can create a C++ project, build sources, and execute an application:
Supported Operating Systems
Linux | macOS |
---|---|
Please see 1.1. Installation · The Poac Book for more information about supported OS.
Code Status
Installation
Easy install
curl -fsSL https://sh.poac.pm | bash
For Arch Linux users, there are AUR packages: poac, poac-devel-git, and poac-git
Manual install (Build)
Poac requires the following compilers, tools, and packages to build:
compilers
- Compilers which support C++20
tools
cmake
:3.17
or later
packages
The packages with names in italics are not needed installing before the following commands because they will be automatically installed when configuring by CMake.
boost
:1.70.0
or later- algorithm
- asio
- beast
- dynamic_bitset
- graph
- predef
- property_tree
- range
- scope_exit
- test (dev)
- uuid
clipp
:master
branchfmt
:7.1.3
or latergit2-cpp
:v0.1.0-alpha.0
or laterlibarchive
:3.4.3
or laterlibgit2
:0.27
or latermitama-cpp-result
:master
branchopenssl
: as new as possiblespdlog
:1.9.0
or latertoml11
:3.0.0
or later
After you prepared the requirements, you can build Poac using the following commands:
$ git clone https://github.com/poacpm/poac.git
$ cd poac
$ mkdir build && cd $_
$ cmake .. -DCMAKE_BUILD_TYPE=Release
$ make # or ninja
$ make install
Why Poac?
C++ is often considered to be a complicated language and shunned unconsciously by most people. It is thought that it is hard to construct a C++ environment, there is no definitive package manager, and the strange syntax of build systems such as CMake are the causes that make us feel hesitant.
By developing a package manager and a build system, which have an intuitively easy-to-use interface like npm and Cargo, and make users be able to develop applications and libraries without being aware of CMake, developers will be able to focus on learning C++ without stumbling. I also plan to implement integration with many other build systems and package managers, so you should be able to switch seamlessly.
Contributing
Please see CONTRIBUTING.md. You can also find the useful architecture documentation.
This project exists thanks to all the people who contribute.
License
Poac is licensed under the terms of the Apache License version 2.0.
Please see LICENSE for details.
Third-party software
- boost - https://github.com/boostorg/boost/blob/master/LICENSE_1_0.txt
- clipp - https://github.com/muellan/clipp/blob/master/LICENSE
- fmt - https://github.com/fmtlib/fmt/blob/master/LICENSE.rst
- git2-cpp - https://github.com/ken-matsui/git2-cpp/blob/main/LICENSE
- libarchive - https://github.com/libarchive/libarchive/blob/master/COPYING
- libgit2 - https://github.com/libgit2/libgit2/blob/master/COPYING
- mitama-cpp-result - https://github.com/LoliGothick/mitama-cpp-result/blob/master/LICENSE
- openssl - https://github.com/openssl/openssl/blob/master/LICENSE.txt
- spdlog - https://github.com/gabime/spdlog/blob/v1.x/LICENSE
- toml11 - https://github.com/ToruNiina/toml11/blob/master/LICENSE