メインコンテンツまでスキップ

Neat のビルド

このガイドでは、Neat のソースコードからのビルドについて説明します。 事前にビルドされたパッケージのインストールについては、Neat Library を参照してください。

build.sh は、サポートされているビルドのエントリーポイントです。依存関係のチェック、オプションの依存関係の同期、CMake による設定/ビルド、オプションのドキュメント生成、インストール時の整合性チェック、パッケージングなどを処理します。

ビルド環境

build.sh は、アクティブな環境を自動的に検出します。

  • Modalix DevKit のネイティブ環境
  • Neat SDK 環境(クロスコンパイル)

どちらの環境でも、同じ build.sh コマンドを実行できます。

クロスコンパイルの前提条件

クロスコンパイルは、DevKit 上で直接ビルドするよりも通常は高速ですが、その後、ビルドされたアーティファクトを DevKit に転送する必要があります。クロスコンパイルには、Neat SDK が必要です。

まず、ホストマシンに sima-cli をインストールし、次に SDK をインストールします。

curl -fsSL https://artifacts.neat.sima.ai/sima-cli/linux-mac.sh | bash
sima-cli install sdk

sima-cli から指示があったら、SDKオプションを選択してください。

次に、SDKを起動します。

sima-cli sdk elxr

次に、SDK内にsima-cliをインストールし、その後、SDKのパッチをインストールします。

curl -fsSL https://artifacts.neat.sima.ai/sima-cli/linux-mac.sh | bash
source ~/.bash_profile
sima-cli install tools/sdk-patch
  • SDK のインストールは、Windows および Ubuntu でサポートされています。
  • Modalix DevKit 上でネイティブにビルドする場合、SDK のインストール/パッチ手順は不要です。

ビルドオプション

サポートされている build.sh オプション:

  • --dev-only: コアライブラリとヘッダーのみをビルドします(デフォルト)。
  • --all: ライブラリ + テスト + チュートリアル + Python ホイールをビルドします。ドキュメントと依存関係を有効にします。
  • --python: 選択したターゲットに加えて、Python バインディング (pyneat) をビルドします。
  • --install-neat-internals, --install-deps: ビルド前に、依存関係のアーティファクトをダウンロードしてインストールします。
  • --doc: ドキュメントのみをビルドします。
  • --install: ビルド/パッケージング後、生成されたアーティファクトを現在の環境にインストールします。ペアリングされた Neat SDK モードでは、これはペアリングされた DevKit 上にも対応するアーティファクトをデプロイおよびインストールします。
  • --no-dist: ディストリビューションパッケージングをスキップします。
  • --clean: 構成前に build/ を削除します。
  • --no-doc: ドキュメントのビルドをスキップします(--all を使用している場合でも)。
  • --no-node: Node.js のインストールをスキップします(Node が存在しない場合、ドキュメントのビルドが失敗する可能性があります)。
  • --install-deps-only: システム依存関係と依存関係ヘッダーをインストールしてから終了します。

コンパイラキャッシュ

build.shsccache を自動的に有効にし、そのキャッシュは --clean 後も利用可能です。ローカルビルドでは、ユーザーローカルのディスクキャッシュが使用されます。Vulcan は、developmain にそれぞれ個別の保護されたキャッシュを提供します。フィーチャーブランチは、最も近い保護されたベースから分離された書き込み可能なキャッシュをシードし、ブランチが削除されるまでそれを保持します。

ローカルコントロール、クラウドアクセスルール、キャッシュネームスペース、統計、検証、およびトラブルシューティングについては、Neat sccache チートシート を参照してください。

一般的なビルド

コアライブラリのみ(デフォルト):

./build.sh

完全ビルド(ライブラリ、テスト、チュートリアル、ドキュメント、ホイール、パッケージング):

./build.sh --all

コアライブラリとPythonバインディング:

./build.sh --dev-only --python

ドキュメントのみ:

このコマンドは macOS でも動作します。

./build.sh --doc

ドキュメントのビルドプロセスでは、build/autodoc/insight/neat_insight/openapi.json でダウンロードされた OpenAPI 仕様に基づいて、Insight API のリファレンスが生成されます。ローカル開発環境では、INSIGHT_OPENAPI_SPEC を使用して、このデフォルト設定を上書きできます。

INSIGHT_OPENAPI_SPEC=../insight/neat_insight/openapi.json ./build.sh --doc

相対パスは、Coreリポジトリのルートから解決され、Docusaurusジェネレーターが実行される前に絶対パスに変換されます。選択したファイルが存在しない場合、Insight API生成ステップはスキップされ、そのパスが報告されます。

完全なビルドをクリーンにする:

./build.sh --all --clean

コアをビルドせずに依存関係をインストールします。

./build.sh --install-deps-only

出力

  • ビルドツリー:build/
  • Docusaurusサイトの出力(ドキュメントのビルドが実行された場合):website/build/
  • インストール時の整合性チェックのプレフィックス:ビルド中に表示される一意のテンポラリディレクトリ(${TMPDIR:-/tmp}/sima-neat-install-test.XXXXXX)。成功した場合は削除され、失敗した場合は検査のために保持されます。
  • Neatパッケージのアーティファクト(*.deb)は、Linuxの完全なビルドで生成されます(ただし、--no-distが使用されている場合は除きます)。
  • Extrasパッケージ(*extras.tar.gz)は、Linuxの完全なビルドで生成されます(ただし、--no-distが使用されている場合は除きます)。
  • Pythonホイール(dist/*.whl)は、Pythonビルドが有効になっている場合に生成されます。

Pythonホイールは、メインのCMakeビルドによって生成された_pyneat_core拡張をパッケージ化します。ホイールの作成は、2番目のCMakeツリーを構成またはコンパイルしないため、ライブラリ、DEB、Extrasアーカイブ、およびホイールは、1つのコンパイルを共有します。

ビルドプロファイルとCMakeオプション

フレームワークの最上位のCMakeLists.txtは、何がビルドされ、どのようにビルドされるかを制御するいくつかのオプションを公開します。以下に、重要なオプションを示します。

ビルドプロファイル

フレームワークは、次の3つの名前付きプロファイルをサポートしています。

プロファイル使用例ビルドされるもの
Production顧客向けのビルドすべてのパブリックノード、モデルアーカイブのロード、Modalixバックエンド、最適化
DeveloperフレームワークエンジニアProductionセット + デバッグノード + 拡張診断 + テスト
SandboxマルチテナントのデプロイProductionセット + 強化されたモデルアーカイブのセキュリティデフォルト

構成時に-DSIMA_NEAT_PROFILE=Production|Developer|Sandboxを使用して選択するか、CMakeLists.txtでデフォルトを受け入れます。

共通のCMakeオプション

オプションデフォルト効果
SIMA_NEAT_BUILD_TESTSON(Developer)gtestスイートをビルドします。Productionビルドでの高速なCIのために無効にします。
SIMA_NEAT_BUILD_TUTORIALSOFFチュートリアルのバイナリをビルドします。
SIMA_NEAT_BUILD_PYTHONONpyneat nanobindモジュールをビルドします。
SIMA_NEAT_BUILD_INTERNALSOFF(パブリック)内部のreach-through層(core/src/pipeline/internal/sima/)をビルドします。
SIMA_NEAT_ENABLE_TVM_FALLBACKONMLAが処理できないオペレーションに対して、TVMベースのフォールバックカーネルをコンパイルします。
SIMA_NEAT_ENABLE_RTSPONRTSPソース/シンクノードをビルドします。
SIMA_NEAT_DEBUG_PLUGINSOFFGStreamerプラグインのデバッグをstdoutに出力します。
SIMA_NEAT_USE_SYSTEM_GSTREAMERON(ホスト)/ OFF(クロス)バンドルする代わりに、システムのGStreamerにリンクします。
SIMA_NEAT_WARN_AS_ERROROFFコンパイル時の警告をエラーとして扱うようにします。CIに推奨されます。

ツールチェーンの調整

Modalixへのクロスコンパイルの場合:

cmake -B build \
-DCMAKE_TOOLCHAIN_FILE=cmake/modalix.cmake \
-DSIMA_NEAT_PROFILE=Production

ホスト側での開発について:

cmake -B build -DSIMA_NEAT_PROFILE=Developer

ツリー構造で公開されている要素を列挙するには:

cmake -L -B build # list all cache variables
cmake -LA -B build # include advanced

最上位の CMakeLists.txt は、オプション名の定義元となります。