Three tools, three jobs
You know C++, but the build machinery may feel like a pile of forgotten incantations. Give each tool one job. CMake reads your project description, checks the toolchain during configuration, and generates a build graph. Ninja executes that graph efficiently. Clang compiles each C++ translation unit; the compiler driver also invokes a linker to combine the resulting object files and libraries.
A configure step may compile small probes, but it does not build your whole renderer. A successful build does not run your tests. CTest runs the tests you registered. Keeping these boundaries visible makes a failure easier to locate: configuration, compilation, linking, or runtime.
The native/ folder is a separate C++ project inside this SvelteKit course. Bun runs the learning website; it is not your C++ compiler. The first authored checkpoints start in your own empty my-checker folder; later renderer commands start from the explicitly named project directory. CMake 3.25 or later supports the shipped preset format. Use a Clang toolchain and standard library that implement the C++23 features used here, especially std::expected. Language mode and library support are separate requirements.
Write the four words configure, compile, link, test. Put CMake, Ninja, Clang, the linker, and CTest next to the work each does. It is fine for one tool to orchestrate another.
