A simple C++ package manager that helps you manage dependencies for your C++ projects. This tool provides both a command-line interface (CLI) and a graphical user interface (GUI) for managing C++ packages from GitHub repositories.
- π Easy Project Initialization - Initialize new C++ projects with dependency management
- π¦ Dependency Management - Add, remove, update, and manage C++ dependencies
- π GitHub Integration - Search and install packages directly from GitHub repositories
- ποΈ CMake Integration - Automatic CMake configuration for building dependencies
- π¨ Modern GUI - graphical interface built with Tauri and React
- β‘ Fast CLI - command-line interface for automation and scripting
- π Version Constraints - Manage version requirements for your dependencies
-
Clone the repository:
git clone <repository-url> cd Depo
-
Build the CLI:
cargo build --release
-
Install the CLI:
cargo install --path cli
The GUI provides a user-friendly interface for managing C++ packages with the same functionality as the CLI.
cd GUI
npm install
npm run tauri devThe application will open automatically
cd GUI
npm install
npm run tauri buildThe built application will be available in GUI/src-tauri/target/release/.
- Project Selection - Choose your C++ project directory
- Dependency Management - Add, remove, and update dependencies through a visual interface
- Build Management - Install and build dependencies with one click
- Settings - Configure GitHub tokens and other settings
- Real-time Updates - See dependency changes immediately
- Launch the application using the development or production build
- Select a project by choosing a directory containing a package file
- Manage dependencies using the intuitive interface:
- Add new dependencies by searching GitHub repositories
- Remove unwanted dependencies
- Update existing dependencies
- Modify version constraints
- Build your project with the integrated build tools
The CLI tool is called depo_cli and provides various commands for managing C++ packages.
- Check the command help:
depo_cli --help - For specific command help:
depo_cli <command> --help - Review the generated package configuration files
- Check the console output for detailed error messages
depo_cli initCreates a new package configuration file in the current directory.
# Add a dependency (interactive selection)
depo_cli add <dependency-name>
# Add with specific version constraint
depo_cli add <dependency-name> --version <version>depo_cli delete <dependency-name>depo_cli installDownloads and installs all dependencies listed in your package file.
depo_cli buildBuilds all dependencies using CMake and generates necessary bridge files.
depo_cli listShows all currently installed dependencies.
depo_cli update <dependency-name># Set a new version constraint
depo_cli constraint <dependency-name> --new <version-constraint>
# Remove version constraint
depo_cli constraint <dependency-name> --removeFor accessing private repositories or increasing API rate limits, configure a GitHub personal access token:
# Set GitHub token
depo_cli token set <your-github-token>
# Check if token is configured
depo_cli token check
# Remove token
depo_cli token removeThe package manager uses a YAML configuration file to track dependencies and project settings. This file is automatically created when you run pkg init.
name: "my-project"
version: "1.0.0"
dependencies:
- name: "nlohmann/json"
version: "v3.11.2"
url: "https://github.com/nlohmann/json"
version_constraint: "v3.11.2"
- name: "catchorg/Catch2"
version: "v3.0.0"
url: "https://github.com/catchorg/Catch2"
version_constraint: "v3.0.0"The package manager automatically generates CMake configuration files to integrate your dependencies into your build system. After running pkg build, you can include the generated files in your CMakeLists.txt:
cmake_minimum_required(VERSION 3.10)
project(TestProject)
include(deps/CMakeIncludes.cmake)
add_executable(main src/main.cpp)
include(deps/CMakeLinks.cmake)Those 2 include lines are required to add in order to work, CMakeIncludes.cmake before adding exe, CMakeLinks.cmake after!!
This project is licensed under the terms specified in the LICENSE file.
Happy coding with C++ Package Manager! π