A command-line build tool for C without the bloat of CMake.
Project description
r3make
r3make is a lightweight and straightforward command-line build tool for C projects. It simplifies the compilation process without the complexity of tools like CMake, making it perfect for small to medium-sized projects with minimal dependencies.
Features
- Simple JSON Configuration: Define project settings in a JSON-based
.r3makefile. - Compiler Support: Currently supports MinGW GCC, with plans to support Emscripten, Clang, MSVC, and more.
- Automatic Source Management: Collects
.cfiles from specified directories for compilation. - Flexible Target Output: Build executables (
.exe), shared libraries (.dll/.so/.dylib), and soon static libraries (.a/.lib). - Cross-Platform Design: While currently built and maintained on Windows, future updates aim to support Linux and MacOS.
Installation
Install via PyPI:
pip install r3make
Getting Started
Step 1. Create a .r3make Configuration File
The .r3make file now uses JSON format to specify project settings. Here's an example configuration:
{
"r3make": {
"pre-build": {},
"post-build": {}
},
"c-instance": "GCC",
"c-flags": [],
"c-defines": [],
"src-dirs": [],
"inc-dirs": [],
"lib-links": {},
"out-dir": "bin",
"out-type": "exe",
"out-name": "program",
}
- (Optional)
r3make: Dictionary of pre and post r3make commands for this build. c-instance: Compiler to use (e.g., MinGW GCC, Emscripten, Clang).- (Optional)
c-flags: List of compiler flags to be used during this build. - (Optional)
c-deines: List of project directives to be defined by the pre-processor. inc-dirs: List of directories to search for header files.src-dirs: Directories containing source files.- (Optional)
lib-links: Key-value pairs of libraries to link. Value is optional for default system paths. out-dir: Directory for generated output.out-type: Type of output file (exe,dll,a, etc.).out-name: Name of the output file (without extension).
Step 2. Build Your Project
Run the following command, specifying your .r3make configuration file:
r3make myproject.r3make
This will compile and link your project, placing the output in the specified out-dir.
Example Usage
Given the following directory structure:
MyProject/
src/
/main.c
/utils.c
include/
/utils.h
myproject.r3make
A .r3make configuration would look like this:
{
"c-instance": "GCC",
"src-dirs": ["src"],
"inc-dirs": ["include"],
"out-dir": "bin",
"out-type": "exe",
"out-name": "MyProject",
}
This configuration will:
- Compile
main.candutils.cinto object files. - Link them into an executable called
MyProject.exein thebindirectory.
[ NOTE: r3make will create and store object files at config[out-dir]\\ofiles. This directory can be safely removed after a build has completed wither manually or with the nofiles post-build command. ]
Why r3make?
While tools like CMake are powerful, they can be overly complex for straightforward tasks. r3make focuses on simplicity and ease of use, letting you focus on writing code rather than managing build configurations.
CBUILD's Wishlist
-
Add Compiler Support:
- Extend
BaseCompilerwith support for Emscripten, Clang, MSVC, and other compilers. - Auto-detect the default system compiler.
- Extend
-
Improved Error Handling:
- Provide more descriptive errors when builds fail.
- Catch common misconfigurations in the
.r3makefile.
-
Incremental Builds:
- Implement a mechanism to skip recompilation of unchanged files.
-
Verbose Mode:
- Add a CLI flag for detailed logging of compilation steps.
-
Parallel Builds:
- Utilize multiple CPU cores to speed up compilation.
Contributing
Contributions are welcome! If you encounter issues or have feature suggestions, feel free to open an issue or submit a pull request on GitHub.
License
r3make is licensed under the MIT License. See LICENSE for more information.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file r3make-2025.1.2.tar.gz.
File metadata
- Download URL: r3make-2025.1.2.tar.gz
- Upload date:
- Size: 10.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
47aeed5ed185e82b55a9366f0feaab5d8a26c5db897138ca131be4a2ee689046
|
|
| MD5 |
0a69aa986cae76d4303717cfd6907627
|
|
| BLAKE2b-256 |
62111156d05c5f5f91e857b4b1019f803926c6e60a0c7e200ecb525d430ae54e
|