jmake++ is a lightweight, zero-dependency build system for C++ projects, written in C++. It replaces complex systems like Make and CMake for small to mid-size projects with a single JSON configuration file and intuitive CLI.
Version: 1.8.6
Platforms: Windows ✅ & Linux ✅
Dependencies: g++, nlohmann/json, and optionally filio.h (bundled or install separately)
- 📦 Easy project config via
project.json - 🔁 Wildcard-based include path expansion (
./include/*) - 🔧 Build targets: Executables (
elf) and shared libraries (shared) - 📁 Header installer: install
.h/.hppfiles into your project - 🧼
cleancommand to delete build artifacts - 🆙 Automatic version tracking on successful builds
- ✅ Cross-platform: single
.exefor Windows; CLI-native on Linux - 🚀 Installer scripts (
installer.sh/installer.ps1) for PATH setup
- fix a bug where the built project would output a relative path if a relative path was given, now it uses
filio::extra::absolute_path
On Linux: double click the .deb file
On windows double click the .MSI file
THE INSTALLER SCRIPTS FROM NOW ON WILL BE OUTDATED PLEASE NOTE THIS BUT THEY SHOULD STILL WORK JUST WILL NO LONGER RECIVE UPDATES
git clone https://github.com/replit-user/jmakepp ./jmakepp
cd jmakepp
jmakepp build
---however this will only work if the version of jmake++ you have supports the flags key in project.json most newer versions should
jmakepp new <path> # Create a new project in the given directory
jmakepp build <version> # Build the project and update version in project.json
jmakepp install <path> # Install .h/.hpp files to ./include
jmakepp clean # Remove the ./build directory
jmakepp version # Show jmake++ version
jmakepp help # Show available commands
jmakepp update # update the script but for some reason doesn't workjmakepp new myproject
cd myproject
jmakepp build 1.1.0
./build/example-1.1.0You’ll see:
🚧 Running: g++ -o ./build/example-1.0 ./src/main.cpp -I./include
✅ Build successful -> ./build/example-1.0
🔄 Updated version to: 1.1.0{
"name": "example",
"version": "1.0",
"buildpath": "./build/",
"includepaths": ["./include/*"],
"srcpath": "./src/main.cpp",
"type": "elf",
"flags":"",
"platforms":[
"windows",
"linux"
]
}| Field | Type | Description |
|---|---|---|
name |
string |
Name of the output binary |
version |
string |
Semantic version string |
buildpath |
string |
Output path for compiled binary |
includepaths |
array[string] |
List of include directories (supports *) |
srcpath |
string |
Source file(s) (currently only one path) |
type |
"elf" or "shared" |
Build target: executable or shared lib |
flags |
string or list of strings |
additional flags to add to g++ |
platforms |
list of strings, either windows or linux |
the platofrms to compile with |
myproject/
├── project.json
├── include/
├── src/
│ └── main.cpp
└── build/ # Generated after buildInstall individual headers or full directories:
jmakepp install path/to/header.hpp
jmakepp install include/Copies valid .h or .hpp files to your project's ./include/.
jmakepp cleanRemoves the build directory completely.
-
nlohmann/jsonfor JSON parsing -
filiofor cleaner I/O abstraction (optional) -
C++17 and
<filesystem>for cross-platform FS operations
g++ -o ./build/example-1.0 ./src/main.cpp -I./includeFor shared libraries:
g++ -o ./build/libexample-1.0.so ./src/main.cpp -shared -fPIC -I./includeempty for now
Made by replit-user
Responsible Sharing License do most things freely and give credit if republishing
- 1.8.6
- added support for macos
- added support for C compilation via clang for macos and gcc for windows/linux