Об этом проекте

## Что представляет собой этот репозиторий `nx_open` содержит компоненты Network Optix Meta Platform с открытым исходным кодом — исходный код и спецификации, используемые для создания всех продуктов Powered-by-Nx, включая Nx Witness Video Management System (VMS). Основной компонент, который можно собрать из этого репозитория — VMS Desktop Client. Библиотека Nx Kit (`artifacts/nx_kit/`) входит в состав Desktop Client, но также может использоваться независимо; подробности в её собственном файле 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 (Xcode с Clang) x64 и Apple M1/M2 ## Предварительные требования для сборки - Python 3.8+, доступный в `PATH` как `python`, а на macOS/Ubuntu также как `python3` - Pip, доступный в `PATH` и установленный для интерпретатора, используемого при сборке - CMake, Ninja и Conan; рекомендуется устанавливать через pip из `requirements.txt` ветки `master` - Linux: зависимости для сборки и времени выполнения устанавливаются через CMake с `-DinstallSystemRequirements=ON`; сам компилятор загружается как артефакт Conan, а не берётся из системы - Windows: Visual Studio 2022 Community Edition с рабочей нагрузкой «Desktop development with C++» и компонентом «C++ CMake tools for Windows» - macOS: Xcode Command Line Tools 14.2+, а также Rosetta 2 на Apple M1/M2 ## Сборка Desktop Client Тексты GUI и графика клиента берутся из пакета настройки (Customization Package, zip-файл), который определяет брендирование VMS. Пакет по умолчанию с брендированием Nx-Meta и плейсхолдерами загружается из Conan; пользовательские пакеты можно создать на Nx Meta Developer Portal. Удобные скрипты `build.sh` (Linux/macOS) и `build.bat` (Windows) оборачивают этапы конфигурации и сборки CMake. Они создают каталог сборки рядом с корневым каталогом репозитория с суффиксом `-build`. Обычный запуск создаёт чистую Debug-сборку с исполняемыми файлами в `nx_open-build/bin/`; `-DdeveloperBuild=OFF` создаёт Release-сборку с дистрибутивными пакетами и архивом модульных тестов в `nx_open-build/distrib/`. Пользовательский пакет можно передать с помощью `-DcustomizationPackageFile=<customization.zip>`, где id из `description.json` должен совпадать с id Сервера. Инкрементальные сборки просто перезапускают скрипт; генерация перезапускается автоматически при необходимости. Кросс-компиляция использует `-DtargetDevice=` со значениями, такими как `linux_x64`, `linux_arm64`, `linux_arm32`, `macos_x64`, `macos_arm64`. Сборка и отладка в Visual Studio IDE поддерживаются после запуска этапа генерации из командной строки. Установка `NX_CONAN_DOWNLOAD_CACHE` позволяет избежать повторной загрузки артефактов при чистых сборках. ## Подписывание На Windows исполняемые файлы и файл дистрибутива можно подписать сертификатом издателя PKCS#12 через `signtool.py`, настраиваемым через YAML-файл (путь к сертификату, пароль, необязательные серверы временных меток) и включаемым с помощью `-DsigntoolConfig=`. Самоподписанный тестовый сертификат можно создать с помощью прилагаемого пакетного скрипта. Linux не требует подписывания и не поставляет инструменты для этого. Автономный инструмент подписывания для macOS описан как находящийся в разработке. ## Запуск клиента и совместимость с сервером Desktop Client запускается напрямую из каталога сборки. На Windows сначала нужно запустить `activate_run.bat` (генерируется Conan) для установки PATH и других переменных; `deactivate_run.bat` восстанавливает их. Поскольку исходный код VMS Server не является открытым, клиент, собранный из этого репозитория, может подключаться только к совместимому Серверу, полученному из публичного релиза VMS, включая предварительные релизы Nx Meta VMS. Совместимость гарантируется только тогда, когда Клиент собран из того же коммита, что и Сервер, идентифицируемого по git-тегам, таким как `vms/4.2/12345_release_all`. Клиенты из более поздних коммитов в той же ветке могут продолжать работать некоторое время, но могут потерять совместимость. Клиент и Сервер также должны использовать пакеты настройки (Customization Packages) с одинаковым customization id. Система сборки пытается определить совместимую версию Сервера из git-тегов во время генерации; `-DbuildNumber=` может переопределить это, а `-DbuildNumber=AUTO` восстанавливает автоматическое определение. Автоматические обновления VMS отключены для Desktop Client с открытым исходным кодом, так как они перезаписали бы пользовательскую сборку сборкой от Nx; администратор всё же может принудительно выполнить такое обновление. Пользовательские серверы обновлений и пакеты технически возможны, и инструкции или инструменты могут быть предоставлены в будущем.