Minimal
After installation, start here to confirm your Neat setup is wired correctly.
This page keeps the first run intentionally small: create a tiny app, confirm the headers/imports resolve and it builds, and run it on the DevKit to confirm the runtime responds. Once this works, continue to Run an App to run a real model inside a small Graph application.
To run commands on the DevKit directly from inside the SDK (for example, dk build/sima_neat_hello or dk hello_neat.py), set up DevKit pairing first.
Required setup: Pair the Neat Development Environment with a DevKit
Minimal application
Create a working directory for the example, then use the Python / C++ tabs to follow your language. Your choice follows the site-wide language selector, so it stays consistent across the docs.
Create two files:
-
CMakeLists.txttells CMake how to build and link the app.CMakeLists.txtcmake_minimum_required(VERSION 3.16)project(sima_neat_hello LANGUAGES CXX)set(CMAKE_CXX_STANDARD 20)set(CMAKE_CXX_STANDARD_REQUIRED ON)set(CMAKE_CXX_EXTENSIONS OFF)# Supports both:# - DevKit/native installs (system paths)# - Cross builds with SYSROOT exported (SDK sysroot paths)if(DEFINED ENV{SYSROOT} AND NOT "$ENV{SYSROOT}" STREQUAL "")list(APPEND CMAKE_PREFIX_PATH"$ENV{SYSROOT}/usr""$ENV{SYSROOT}/usr/lib""$ENV{SYSROOT}/usr/lib/aarch64-linux-gnu")endif()find_package(SimaNeat REQUIRED CONFIG)find_package(PkgConfig REQUIRED)pkg_check_modules(OPENCV REQUIRED IMPORTED_TARGET opencv4)add_executable(sima_neat_hello main.cpp)target_link_libraries(sima_neat_helloPRIVATESimaNeat::sima_neatPkgConfig::OPENCV)The two highlighted lines are what pull Neat into your build:
find_package(SimaNeat REQUIRED CONFIG)locates the installed Neat package, andtarget_link_libraries(sima_neat_hello PRIVATE SimaNeat::sima_neat ...)links your executable against it — the importedSimaNeat::sima_neattarget also brings in Neat's headers and transitive dependencies, so you set no include or library paths by hand. (The OpenCV lines are only here because this example decodes an image.) -
main.cppcontains the tiny Neat program.main.cpp#include <iostream>#include <pipeline/TensorCore.h>int main() {auto storage = simaai::neat::make_cpu_owned_storage(64);if (!storage) {std::cerr << "Failed to allocate CPU tensor storage\n";return 1;}std::cout << "Hello from sima-neat\n";return 0;} -
Your working directory should look like this:
sima-neat-hello/├── CMakeLists.txt└── main.cpp
Build the example:
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j
Run:
- On the DevKit
./build/sima_neat_hello
- On the Neat SDK from host
dk build/sima_neat_hello
You should see:
Hello from sima-neat
If the program builds, the imports resolve, and it prints the greeting, your Neat installation is ready.
dk / devkit-rundk (alias for devkit-run) is a shell function in the SDK container, defined in ~/devkit-sync.rc and loaded by ~/.bashrc.
Because it is a shell function, commands such as which devkit-run may return nothing in the SDK shell. Use dk <file> to execute a built binary or Python entry-point file on the paired DevKit.
Next
Once the minimal app works, continue with Run an App to run a real object-detection model inside a small Graph application.