115 lines
3 KiB
Markdown
115 lines
3 KiB
Markdown
# Cutekit
|
|
|
|
Cutekit is a build system that aims to be simple, fast and easy to use.
|
|
A project is described using json files.
|
|
|
|
## Project file
|
|
|
|
The project file is used to describe the project and its dependencies.
|
|
|
|
See: [doc/spec/project.md](doc/spec/project.md) for the full specification.
|
|
|
|
Example:
|
|
|
|
> project.json
|
|
```json
|
|
{
|
|
"$schema": "https://schemas.cute.engineering/stable/cutekit.manifest.project.v1",
|
|
"id": "skift-org/skift",
|
|
"type": "project",
|
|
"description": "The Skift Operating System",
|
|
"extern": {
|
|
"cute-engineering/libheap": {
|
|
"git": "https://github.com/cute-engineering/libheap.git",
|
|
"tag": "v1.1.0"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
Here we describe a project with the id `skift-org/skift` and a dependency to `cute-engineering/libheap` at version `v1.1.0`.
|
|
|
|
## An executable package manifest
|
|
|
|
|
|
When you want to create an executable package, you need to create a `manifest.json` file in any directory under `src/`.
|
|
This is the file that describe an executable with its dependencies.
|
|
|
|
> src/nyan-cat-app/manifest.json
|
|
```json
|
|
{
|
|
"$schema": "https://schemas.cute.engineering/stable/cutekit.manifest.component.v1",
|
|
"id": "nyan-cat-app",
|
|
"type": "exe",
|
|
"description": "rainbows everywhere",
|
|
"requires": [
|
|
"easy-lib"
|
|
]
|
|
}
|
|
```
|
|
|
|
Here we describe an executable with the id `nyan-cat-app` and a dependency to `easy-lib` (which is a library built by the project).
|
|
|
|
You can run the executable by running `$ ck run nyan-cat-app`.
|
|
|
|
## A library package manifest
|
|
|
|
When you want to create a library package, you need to create a `manifest.json` file in any directory under `src/`, like an executable package.
|
|
|
|
> src/easy-lib/manifest.json
|
|
```json
|
|
{
|
|
"$schema": "https://schemas.cute.engineering/stable/cutekit.manifest.component.v1",
|
|
"id": "easy-lib",
|
|
"type": "lib",
|
|
"description": "easy to use library",
|
|
"requires": [
|
|
"cute-engineering/libheap"
|
|
]
|
|
}
|
|
```
|
|
|
|
Here we describe a library with the id `easy-lib` and a dependency to `cute-engineering/libheap` (which is an external dependency described above in the `project.json`).
|
|
|
|
## Using installed libraries
|
|
|
|
You can create a specific installed library through the use of `pkg-config` files.
|
|
For example here is how you add `SDL2` to your project:
|
|
|
|
|
|
> src/extern/sdl2/manifest.json
|
|
```json
|
|
{
|
|
"$schema": "https://schemas.cute.engineering/stable/cutekit.manifest.component.v1",
|
|
"id": "sdl2",
|
|
"type": "lib",
|
|
"description": "A cross-platform development library designed to provide low level access to hardware",
|
|
"tools": {
|
|
"cc": {
|
|
"args": [
|
|
"@exec",
|
|
"pkg-config",
|
|
"--cflags",
|
|
"sdl2"
|
|
]
|
|
},
|
|
"cxx": {
|
|
"args": [
|
|
"@exec",
|
|
"pkg-config",
|
|
"--cflags",
|
|
"sdl2"
|
|
]
|
|
},
|
|
"ld": {
|
|
"args": [
|
|
"@exec",
|
|
"pkg-config",
|
|
"--libs",
|
|
"sdl2"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
```
|