PAIN — project 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 projectpain add raylib-> links raylib to ur projectpain build-> build the projectpain 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.
Download the pre-compiled pain.exe from the latest release and add it to your system PATH.
You can compile it into a native binary for your system using PyInstaller.
-
Install PyInstaller:
pip install pyinstaller
-
Compile to a single executable:
# Navigate to the repo root pyinstaller --onefile pain.py -
Move the binary to your PATH:
# Move the resulting binary from the 'dist' folder sudo mv dist/pain /usr/local/bin/
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- Transform C++ package management into a single-command experience.
- Easily manage dependencies with automated
vcpkg.jsonmutation. - 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_librariesfor you.
- Git >= 2.19.0
- CMake >= 3.21
- A C++ Compiler (GCC, Clang, or MSVC)
- vcpkg (PAIN will install a copy using git)
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