Warning
This project is a work-in-progress (WIP).
Expect breaking changes, missing features, and rough edges.
Not recommended for production use.
YACPPM (Yet Another C++ Manager) is an experimental simple C++ project and package manager, Inspired by Cabin and Cargo.
I'm making it mainly to experiment with automating build setup and also to simplify the build process for my projects hopefully ^^
- Basic project scaffolding (
new,add,build,run) - Support for header-only and CMake-based dependencies
- Local caching of dependencies
- Auto Combines ThirdParty Licenses from dependencies
- Self-host YACPPM
- project template system (partial)
- build Release/Debug options (partial)
- Cross-compilation support (partial)
- Add more build system compatibility
- Finish command impl
- Add auto lib type check
- Make all options useable through cli
- Add post-build action through Lua scripts
Creates a new C++ project (executables by default).
| Option | Description | Example |
|---|---|---|
-template= |
Use a named project template | yacppm new game -template=raylib |
Adds a dependency to your project.
| Type | Description |
|---|---|
-h |
Header-only library |
-c |
CMake-based library |
-llib |
Local library (path on disk) |
Generates a temporary CMakeLists.txt and builds the project.
Same as build but once build finished run if the project is executable
Remove a dependency from your project.
| option | Description |
|---|---|
-cpp |
Header-only library |
yacppm new my_project
cd my_project
yacppm add -h https://github.com/user/header_only_repo v1.0.0
yacppm add -c https://github.com/user/cmake_repo (will default to master branch)
yacppm build or yacppm runCurrently, YACPPM can build:
| From -> To | |
|---|---|
linux->linux |
native |
linux->windows |
through mingw-w64 |
windows->windows |
native |
Currently, YACPPM is developed and tested primarily on:
- Linux (main development OS)
- Windows (partialy tested through VM)
Support for:
- macOS – not tested yet, PRs welcome
This project uses the following third-party libraries: