Hello, world!
This is the first tutorial in the series. It will show you how to create a simple "Hello, world!" program in C++ for skiftOS.
Prerequisites
Create a new project
First, create a new directory for your project and navigate to it:
# You need to be in the root of the skiftOS repository
$ mkdir -p src/tutorial/hello-world
$ cd src/tutorial/hello-world
# Open the project directory in your favorite text editor, for example VSCode
$ code .
Write the manifest
Create a manifest.json
file in the project directory:
{
"$schema": "https://schemas.cute.engineering/stable/cutekit.manifest.component.v1",
"id": "hello-world",
"type": "exe",
"description": "Greets the world",
"requires": [
"karm-sys"
]
}
Here is a brief explanation of the fields in the manifest:
$schema
: The schema of the manifest file. It should always behttps://schemas.cute.engineering/stable/cutekit.manifest.component.v1
.id
: The unique identifier of the component. It should be unique across all components.type
: The type of the component. It should beexe
for an executable.description
: A brief description of the component.requires
: A list of components that this component depends on.
Write the source code
Create a main.cpp
file in the project directory:
#include <karm-sys/entry.h>
// The entry point of the program, skiftOS doesn't use `main` function
Async::Res<> entryPointAsync(Sys::Context &) {
// Print "Hello, world!" to the console
Sys::println("Hello, world!");
// Return success
co_return Ok();
}
Build the project
Now, build the project using the ./skift.sh
script:
$ ./skift.sh builder build hello-world
Run the program
Finally, run the program using the ./skift.sh
script:
$ ./skift.sh builder run hello-world
You should see "Hello, world!" printed to the console.
Conclusion
Congratulations! You have created your first program for skiftOS.
Going further
- Next tutorial: Hello, GUI!
- src/libs/karm-sys/chan.h - The system channel API is similar to stdio