Skip to content

YACPPM (Yet Another C++ Manager) is a simple c++ project manager Inspired by Cabin and Cargo.

License

Notifications You must be signed in to change notification settings

Flo12344/yacppm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

105 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

YACPPM

Yet Another C++ Manager

Warning

This project is a work-in-progress (WIP).
Expect breaking changes, missing features, and rough edges.
Not recommended for production use.

Project Description

YACPPM (Yet Another C++ Manager) is an experimental simple C++ project and package manager, Inspired by Cabin and Cargo.

Why

I'm making it mainly to experiment with automating build setup and also to simplify the build process for my projects hopefully ^^

Current goals

  • 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

Current Commands

yacppm new <project_name> [options]

Creates a new C++ project (executables by default).

Option Description Example
-template= Use a named project template yacppm new game -template=raylib

yacppm add <type> <repo> [version]

Adds a dependency to your project.

Type Description
-h Header-only library
-c CMake-based library
-llib Local library (path on disk)

yacppm build [Release|Debug] [target] [arch]

Generates a temporary CMakeLists.txt and builds the project.

yacppm run [Release|Debug]

Same as build but once build finished run if the project is executable

yacppm remove <repo|name> (not implemented yet)

Remove a dependency from your project.

yacppm set <option>

option Description
-cpp Header-only library

Example

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 run

Cross Platform Build

Currently, YACPPM can build:

From -> To
linux->linux native
linux->windows through mingw-w64
windows->windows native

Platform Support

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

Third-Party

This project uses the following third-party libraries:

  • libgit2: Copyright (C) the libgit2 contributors

  • toml++: Copyright (c) Mark Gillard

  • fmt: Copyright (c) Victor Zverovich and {fmt} contributors

  • barkeep: Copyright (c) Ozan İrsoy

About

YACPPM (Yet Another C++ Manager) is a simple c++ project manager Inspired by Cabin and Cargo.

Resources

License

Stars

Watchers

Forks

Packages

No packages published