Skip to content

omnimistic/pain

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PAIN Logo

$$\color{yellow}{\large \textsf{Because setting up C++ projects shouldn’t hurt this much!}}$$



PAINproject manager for C++

PAIN is a zero-configuration C++ project manager designed to simplify modern C++ development. It combines instant project scaffolding with seamless dependency management, powered by vcpkg and modern CMake.

With PAIN, you can create clean C++20 projects, add libraries, and build your code in seconds — without dealing with complex setup or manual configuration.

  • pain init my_app -> scafolds a project
  • pain add raylib -> links raylib to ur project
  • pain build -> build the project
  • pain run -> run the build

as simple as that!

PAIN handles vcpkg setup, integration, and linking behind the scenes while still generating clean, portable CMake projects — so you stay in control without the usual friction.

No more linker errors. No more environment issues.

Just focus on writing code.

Because setting up C++ projects shouldn’t hurt this much.

Caution

Built because C++ package management was still stuck in the stone age.

Installation

Windows

Download the pre-compiled pain.exe from the latest release and add it to your system PATH.

Linux & macOS (Build from Source)

You can compile it into a native binary for your system using PyInstaller.

  1. Install PyInstaller:

    pip install pyinstaller
  2. Compile to a single executable:

    # Navigate to the repo root
    pyinstaller --onefile pain.py
  3. Move the binary to your PATH:

    # Move the resulting binary from the 'dist' folder
    sudo mv dist/pain /usr/local/bin/

Quick Start

Once installed, you can manage your C++ projects with ease:

# Initialize a new C++ project
pain init my_app
cd my_app

# Add a library
pain add fmt

# Build and run the project
pain build
pain run

Features

  • Transform C++ package management into a single-command experience.
  • Easily manage dependencies with automated vcpkg.json mutation.
  • Blazingly fast global binary caching (compile once, link instantly anywhere).
  • Sane default settings for modern CMake (C++20).
  • Regex-powered Auto-Linker that writes your target_link_libraries for you.

Requirements

  • Git >= 2.19.0
  • CMake >= 3.21
  • A C++ Compiler (GCC, Clang, or MSVC)
  • vcpkg (PAIN will install a copy using git)

License & Attribution

This project is licensed under the GPL-3.0 License.

Important

If you redistribute or modify PAIN, or incorporate PAIN (or any part of it) into your own projects(eg. making your own IDE that comes pre equiped with PAIN), then you must retain the original author credits and provide a link back to this repository:

PAIN repository: https://github.com/omnimistic/pain/
Original author (me): @omnimistic

Packages

 
 
 

Contributors

Languages