Initial Commit
This commit is contained in:
95
README.MD
Normal file
95
README.MD
Normal file
@@ -0,0 +1,95 @@
|
||||
# C++ Build Module in Python
|
||||
|
||||
|
||||
This Python module builds C++ projects without CMake, aiming to be:
|
||||
|
||||
* **Fast**
|
||||
* **Automatic**
|
||||
* **Cool**
|
||||
|
||||
> **Why?** Because I'm just not a huge fan of CMake
|
||||
|
||||
|
||||
-----
|
||||
|
||||
## Setup
|
||||
|
||||
For this module to work without any modifications, your project needs to follow a specific directory structure:
|
||||
|
||||
* **`src/`**: Contains your source code files.
|
||||
* **`include/`**: Holds your header files.
|
||||
* **`build/`**: Where the output binaries will be placed.
|
||||
|
||||
Additionally, you'll need a configuration file named **`builds.json`**. Here's an example:
|
||||
|
||||
```json
|
||||
{
|
||||
"configurations": [
|
||||
{
|
||||
"name": "debug",
|
||||
"build_type": "DEBUG",
|
||||
"platform": "LINUX_x86_64",
|
||||
"args": []
|
||||
}
|
||||
],
|
||||
"global_build_args": []
|
||||
}
|
||||
```
|
||||
|
||||
-----
|
||||
|
||||
## Supported `builds.json` Values
|
||||
|
||||
Here's a breakdown of the supported values within your `builds.json` file:
|
||||
|
||||
* **`"name"`**: Specifies the name of the resulting output binary.
|
||||
* **`"build_type"`**: Controls the compiler flags used for the build.
|
||||
* **Supported values**: `DEBUG`, `TRACE`, `RELEASE`, `PROFILE`, `RELWITHDEBINFO`, `FASTEST`
|
||||
* **`"platform"`**: Defines the target platform architecture for compilation.
|
||||
* **Supported values**: `LINUX_x86_64`, `LINUX_x86`, `LINUX_x86_64_V4`, `MACOS` (untested)
|
||||
* **`"args"`**: A list of strings containing unique compiler flags and instructions specific to a particular build.
|
||||
* **`"global_build_args"`**: A list of strings containing compiler flags and instructions that will be applied to *all* builds.
|
||||
|
||||
-----
|
||||
|
||||
## Usage
|
||||
This project is designed to be portable (kinda).
|
||||
- Clone module into C++ project with supported layout.
|
||||
- Run with `python compile`
|
||||
|
||||
### Example Usage
|
||||
```bash
|
||||
oscarg@ws01:~/Development/rpg-game$ ls
|
||||
build builds.json compile include src
|
||||
oscarg@ws01:~/Development/rpg-game$ cat builds.json
|
||||
{
|
||||
"configurations": [
|
||||
{
|
||||
"name": "debug",
|
||||
"build_type": "DEBUG",
|
||||
"platform": "LINUX_x86_64",
|
||||
"args": []
|
||||
},
|
||||
{
|
||||
"name": "trace",
|
||||
"build_type": "TRACE",
|
||||
"platform": "LINUX_x86_64",
|
||||
"args": []
|
||||
}
|
||||
],
|
||||
"global_build_args": ["-lSDL3", "-lSDL3_image", "-lm"]
|
||||
}oscarg@ws01:~/Development/rpg-game$ python compile
|
||||
[CppBuilder] 2025-07-07 14:00:37 - DEBUG - 'debug' config loaded from file.
|
||||
[CppBuilder] 2025-07-07 14:00:37 - DEBUG - 'trace' config loaded from file.
|
||||
[CppBuilder] 2025-07-07 14:00:37 - INFO - Configurations successfully loaded from 'builds.json'.
|
||||
[CppBuilder] 2025-07-07 14:00:37 - INFO - Starting builds...
|
||||
[MultiprocessWorker] 2025-07-07 14:00:37 - DEBUG - Adding task with callable _build_worker
|
||||
[MultiprocessWorker] 2025-07-07 14:00:37 - DEBUG - Adding task with callable _build_worker
|
||||
[MultiprocessWorker] 2025-07-07 14:00:37 - DEBUG - Starting with 2 tasks and max 4 processes.
|
||||
[MultiprocessWorker] 2025-07-07 14:00:37 - DEBUG - All multiprocessing tasks completed.
|
||||
[CppBuilder] 2025-07-07 14:00:37 - INFO - SUCCESS: Compiled 'build/trace_linux_x86-64'
|
||||
[CppBuilder] 2025-07-07 14:00:37 - INFO - SUCCESS: Compiled 'build/debug_linux_x86-64'
|
||||
oscarg@ws01:~/Development/rpg-game$ ls build/
|
||||
debug_linux_x86-64 res trace_linux_x86-64
|
||||
oscarg@ws01:~/Development/rpg-game$
|
||||
```
|
||||
Reference in New Issue
Block a user