Files
compile/README.MD
2025-07-07 14:12:53 +12:00

95 lines
3.1 KiB
Markdown

# 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$
```