このプロジェクトについて

## このリポジトリの内容 `nx_open`には、Network Optix Meta Platformのオープンソースコンポーネント、つまりPowered-by-Nx製品(Nx Witness Video Management System (VMS)を含む)の構築に使用されるソースコードと仕様が含まれています。このリポジトリから構築可能な主要コンポーネントはVMSデスクトップクライアントです。Nx Kitライブラリ(`artifacts/nx_kit/`)はデスクトップクライアントの一部ですが、単独で使用することもできます。詳細はそのreadmeを参照してください。 特に記載がない限り、ほとんどのファイルはMozilla Public License 2.0の下でライセンスされています。ライセンスの全文は`licenses/license_mpl2.md`にあります。バンドルされているサードパーティのオープンソースコンポーネントの完全なリストは、プロジェクトのOpen Source Software Disclosureページに公開されています。 ## サポートされているプラットフォーム - Windows 10 x64(Microsoft Visual Studio) - Linux Ubuntu 20.04、22.04、24.04(GCCまたはClang)x64、ARM 32/64(Linux x64でのクロスコンパイルによる) - macOS Monterey 12.6.3(Clangを使用するXcode)x64およびApple M1/M2 ## ビルドの前提条件 - Python 3.8以上が`PATH`上で`python`として利用可能であり、macOS/Ubuntuでは`python3`としても利用可能であること - Pipが`PATH`上にあり、ビルドで使用されるインタープリタ用にインストールされていること - CMake、Ninja、Conanは、`master`ブランチの`requirements.txt`からpipを使用してインストールすることを推奨します - Linux: ビルドおよび実行時の依存関係は、CMakeで`-DinstallSystemRequirements=ON`を指定してインストールします。コンパイラ自体はシステムから取得するのではなく、Conanアーティファクトとして取得されます - Windows: 「C++によるデスクトップ開発」ワークロードと「C++ CMake tools for Windows」コンポーネントを含むVisual Studio 2022 Community Edition - macOS: Xcode Command Line Tools 14.2以上、およびApple M1/M2ではRosetta 2 ## デスクトップクライアントのビルド クライアントのGUIテキストとグラフィックは、VMSブランディングを定義するカスタマイゼーションパッケージ(zipファイル)から取得されます。プレースホルダーを含むデフォルトのNx-MetaブランドのパッケージはConanから取得されます。カスタムパッケージはNx Meta Developer Portalで生成できます。 便利なスクリプト`build.sh`(Linux/macOS)と`build.bat`(Windows)は、CMakeの設定とビルド段階をラップします。これらは、リポジトリルートの兄弟ディレクトリに`-build`サフィックスを付けたビルドディレクトリを作成します。通常の実行では、`nx_open-build/bin/`に実行ファイルがあるクリーンなDebugビルドが生成されます。`-DdeveloperBuild=OFF`を指定すると、`nx_open-build/distrib/`に配布パッケージと単体テストアーカイブを含むReleaseビルドが生成されます。カスタムパッケージは`-DcustomizationPackageFile=<customization.zip>`で指定でき、その`description.json`のidはサーバーのものと一致している必要があります。インクリメンタルビルドはスクリプトを再実行するだけです。生成は必要に応じて自動的に再トリガーされます。クロスコンパイルでは、`linux_x64`、`linux_arm64`、`linux_arm32`、`macos_x64`、`macos_arm64`などの値を持つ`-DtargetDevice=`を使用します。Visual Studio IDEでのビルドとデバッグは、コマンドラインから生成段階を実行した後にサポートされます。`NX_CONAN_DOWNLOAD_CACHE`を設定すると、クリーンビルド時にアーティファクトを再ダウンロードすることを回避できます。 ## 署名 Windowsでは、実行ファイルと配布ファイルは、`signtool.py`を使用してPKCS#12発行元証明書で署名できます。これはYAMLファイル(証明書パス、パスワード、オプションのタイムスタンプサーバー)で設定され、`-DsigntoolConfig=`で有効になります。自己署名テスト証明書は、提供されているバッチスクリプトで生成できます。Linuxでは署名は不要で、ツールも提供されていません。スタンドアロンのmacOS署名ツールはまだ開発中と説明されています。 ## クライアントの実行とサーバー互換性 デスクトップクライアントは、ビルドディレクトリから直接実行されます。Windowsでは、PATHやその他の変数を設定するために、最初に`activate_run.bat`(Conanによって生成)を実行する必要があります。`deactivate_run.bat`で元に戻します。 VMSサーバーのソースは公開されていないため、このリポジトリからビルドされたクライアントは、Nx Meta VMSプレビューリリースを含む公開VMSリリースから取得した互換性のあるサーバーにのみ接続できます。互換性が保証されるのは、クライアントがサーバーと同じコミットからビルドされた場合のみで、これは`vms/4.2/12345_release_all`などのgitタグで識別されます。同じブランチの後続のコミットからのクライアントは、しばらくは動作し続ける可能性がありますが、互換性が失われる可能性があります。クライアントとサーバーは、同じカスタマイゼーションIDを持つカスタマイゼーションパッケージも使用する必要があります。ビルドシステムは、生成中にgitタグから互換性のあるサーバーバージョンを導出しようとします。`-DbuildNumber=`でこれを上書きでき、`-DbuildNumber=AUTO`で自動検出に戻します。 自動VMS更新は、オープンソースのデスクトップクライアントでは無効になっています。これは、カスタムビルドがNx製のビルドで上書きされるためです。管理者はそのような更新を強制することはできます。カスタム更新サーバーとパッケージは技術的に可能であり、手順やツールが将来提供される可能性があります。