Project Contract

Every deployable project has a stable name, a version, and one exported sdk::Application.

Project layout

signal-watch/
|-- CMakeLists.txt
|-- main.cpp
`-- config.hpp

Create this layout with aurum create <name>. Additional source files and private project directories are allowed; generated build output is not part of the deployed source package.

Identity and version

aurum_project is the public build contract:

cmake_minimum_required(VERSION 3.25)

if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
  project(signal-watch VERSION 0.0.1 LANGUAGES CXX)
  find_package(Aurum CONFIG REQUIRED)
endif()

aurum_project(
  NAME signal-watch
  VERSION 0.0.1
)

Both values must be literal. aurum push reads them before packaging the project. Treat a published version as immutable and increment it for every new deployment.

Application entry point

Derive from sdk::Application and export exactly one application type:

class SignalWatch final : public aurum::sdk::Application {
public:
  SignalWatch()
    : sdk::Application({.mode = sdk::RuntimeMode::LIVE}) {}
};

AURUM_EXPORT(SignalWatch)

Common commands

Command

Result

aurum compile .

Compile without starting the application.

aurum run .

Compile when required and run in the foreground.

aurum install .

Register the version in the local Aurum home.

aurum push . prod

Package source and register the version on remote prod.

Project arguments can be passed after --:

aurum run . -- --config strategy.toml

See CLI Commands for command options.