Skip to main content

Overview

The cactus build command compiles the Cactus runtime into native libraries for different platforms. Use this to integrate Cactus into your iOS, Android, Flutter, or Python applications.

Syntax

cactus build [flags]

Flags

—apple

Build for Apple platforms (iOS and macOS):
cactus build --apple
Output: build/libcactus.a (static library) Architectures:
  • arm64 (iOS devices, Apple Silicon Macs)
  • x86_64 (Intel Macs, iOS Simulator)
Xcode Integration:
  • Universal framework with headers
  • Swift Package Manager support
  • CocoaPods compatible

—android

Build for Android devices:
cactus build --android
Output: build/android/
  • arm64-v8a/libcactus.so
  • armeabi-v7a/libcactus.so
  • x86_64/libcactus.so (emulator)
Features:
  • JNI bindings included
  • Gradle integration ready
  • Supports Android API 21+

—flutter

Build for all Flutter platforms:
cactus build --flutter
Output: build/flutter/
  • iOS framework
  • Android AARs
  • macOS dylib
  • Windows DLL
  • Linux shared library
Includes:
  • Dart FFI bindings
  • Platform channel setup
  • Plugin structure

—python

Build shared library for Python FFI:
cactus build --python
Output: build/libcactus.so (or .dylib on macOS, .dll on Windows) Features:
  • ctypes compatible
  • CFFI compatible
  • Python 3.8+ support

Examples

# Build for iOS/macOS
cactus build --apple

# Output: build/libcactus.a
# Use in Xcode project or Swift Package

Build Output Structure

Apple Build

build/
├── libcactus.a           # Static library
├── include/
   ├── cactus.h          # C API header
   └── cactus_types.h    # Type definitions
└── CactusFramework/      # iOS framework bundle

Android Build

build/android/
├── arm64-v8a/
   └── libcactus.so
├── armeabi-v7a/
   └── libcactus.so
├── x86_64/
   └── libcactus.so
└── cactus.aar            # Android Archive

Flutter Build

build/flutter/
├── ios/
   └── Cactus.framework
├── android/
   └── cactus.aar
├── macos/
   └── libcactus.dylib
├── windows/
   └── cactus.dll
└── linux/
    └── libcactus.so

CMake Build Process

The build uses CMake with platform-specific configurations:
┌─────────────────────────────────────────────┐
 Building for: Apple (iOS/macOS)             │
└─────────────────────────────────────────────┘

Configuring CMake...
-- Detected architecture: arm64
-- Building for iOS 13.0+
-- Enabling Metal acceleration

Compiling sources... ████████████████ 100%
Linking library...   ████████████████ 100%

 Build complete
  Output: build/libcactus.a
  Size: 12.3MB

Integration Examples

iOS (Swift)

import Cactus

let model = CactusModel(path: "qwen-2.5-1.5b-int4")
let response = model.generate(prompt: "Hello!")
print(response)

Android (Kotlin)

import com.cactus.Cactus

val model = Cactus.loadModel("qwen-2.5-1.5b-int4")
val response = model.generate("Hello!")
println(response)

Flutter (Dart)

import 'package:cactus/cactus.dart';

final model = await Cactus.loadModel('qwen-2.5-1.5b-int4');
final response = await model.generate('Hello!');
print(response);

Python

import ctypes

cactus = ctypes.CDLL('./build/libcactus.so')
model = cactus.load_model(b'qwen-2.5-1.5b-int4')
response = cactus.generate(model, b'Hello!')
print(response)

Build Requirements

macOS/iOS

  • Xcode 14+
  • Command Line Tools
  • CMake 3.20+

Android

  • Android NDK r25+
  • CMake 3.20+
  • Gradle 7.0+

Linux

  • GCC 9+ or Clang 10+
  • CMake 3.20+
  • Build essentials

Windows

  • Visual Studio 2019+
  • CMake 3.20+
  • Windows SDK

Optimization Flags

The build automatically applies:
  • ARM NEON SIMD optimizations
  • Metal acceleration (iOS/macOS)
  • Vulkan support (Android)
  • Link-time optimization (LTO)
  • Size optimization for mobile

See Also

Test Command

Run tests on built libraries

Platform Integration

Integration guides for each platform

Build docs developers (and LLMs) love