# Getting Started
This guide walks through setting up an rsconstruct project for the two primary supported languages: Python and C++.
## Python
### Prerequisites
- rsconstruct installed ([Installation](installation.md))
- [ruff](https://docs.astral.sh/ruff/) on PATH
### Setup
Create a project directory and configuration:
```bash
mkdir myproject && cd myproject
```
```toml
# rsconstruct.toml
[processor.ruff]
```
Create a Python source file:
```bash
mkdir -p src
```
```python
# src/hello.py
def greet(name: str) -> str:
return f"Hello, {name}!"
if __name__ == "__main__":
print(greet("world"))
```
Run the build:
```bash
rsconstruct build
```
Expected output:
```
Processing ruff (1 product)
hello.py
```
Run again — nothing has changed, so rsconstruct skips the check:
```
Processing ruff (1 product)
Up to date
```
### Adding pylint
Install [pylint](https://pylint.readthedocs.io/) and add a section for it:
```toml
# rsconstruct.toml
[processor.ruff]
[processor.pylint]
```
Pass extra arguments via processor config:
```toml
[processor.pylint]
args = ["--disable=C0114,C0115,C0116"]
```
### Adding zspell for docs
If your project has markdown documentation, add a section for the zspell processor:
```toml
[processor.ruff]
[processor.pylint]
[processor.zspell]
```
Create a `.zspell-words` file in the project root with any custom words (one per line) that the zspeller should accept.
## C++
### Prerequisites
- rsconstruct installed ([Installation](installation.md))
- gcc/g++ on PATH
### Setup
Create a project directory and configuration:
```bash
mkdir myproject && cd myproject
```
```toml
# rsconstruct.toml
[processor.cc_single_file]
```
Create a source file under `src/`:
```bash
mkdir -p src
```
```c
// src/hello.c
#include <stdio.h>
int main() {
printf("Hello, world!\n");
return 0;
}
```
Run the build:
```bash
rsconstruct build
```
Expected output:
```
Processing cc_single_file (1 product)
hello.elf
```
The compiled executable is at `out/cc_single_file/hello.elf`.
Run again — the source hasn't changed, so rsconstruct restores from cache:
```
Processing cc_single_file (1 product)
Up to date
```
### Customizing compiler flags
Pass flags via processor config:
```toml
[processor.cc_single_file]
cflags = ["-Wall", "-Wextra", "-O2"]
cxxflags = ["-Wall", "-Wextra", "-O2"]
include_paths = ["include"]
```
See the [CC Single File](processors/cc_single_file.md) processor docs for the full configuration reference.
### Adding static analysis
Install [cppcheck](http://cppcheck.net/) and add a section for it:
```toml
[processor.cc_single_file]
[processor.cppcheck]
```
Both processors run on the same source files — rsconstruct handles them independently.
## Next Steps
- [Commands](commands.md) — full list of rsconstruct commands
- [Configuration](configuration.md) — all configuration options
- [Processors](processors.md) — detailed docs for each processor