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)
- @X3r0Day - reported and helped validate a command injection vulnerability.
This project is licensed under the GPL-3.0 License.