Sobre o projeto

## O que é este repositório `nx_open` contém os componentes de código aberto da Network Optix Meta Platform — o código-fonte e as especificações usados para criar todos os produtos Powered-by-Nx, incluindo o Nx Witness Video Management System (VMS). O principal componente que pode ser compilado a partir deste repositório é o VMS Desktop Client. A biblioteca Nx Kit (`artifacts/nx_kit/`) faz parte do Desktop Client, mas também pode ser usada de forma independente; seu próprio readme traz detalhes. A maioria dos arquivos é licenciada sob a Mozilla Public License 2.0, salvo indicação em contrário; o texto da licença está em `licenses/license_mpl2.md`. Uma lista completa dos componentes de código aberto de terceiros incluídos é publicada na página Open Source Software Disclosure do projeto. ## Plataformas suportadas - Windows 10 x64 (Microsoft Visual Studio) - Linux Ubuntu 20.04, 22.04, 24.04 (GCC ou Clang) x64, ARM 32/64 via compilação cruzada no Linux x64 - macOS Monterey 12.6.3 (Xcode com Clang) x64 e Apple M1/M2 ## Pré-requisitos de build - Python 3.8+ disponível no `PATH` como `python` e, no macOS/Ubuntu, também como `python3` - Pip disponível no `PATH` e instalado para o interpretador usado pelo build - CMake, Ninja e Conan, recomendados de instalação via pip a partir do `requirements.txt` da branch `master` - Linux: dependências de build e de runtime instaladas via CMake com `-DinstallSystemRequirements=ON`; o próprio compilador é obtido como artefato do Conan, em vez de vir do sistema - Windows: Visual Studio 2022 Community Edition com a carga de trabalho "Desenvolvimento para desktop com C++" e o componente "Ferramentas CMake do C++ para Windows" - macOS: Xcode Command Line Tools 14.2+, além do Rosetta 2 em Apple M1/M2 ## Compilando o Desktop Client Os textos e gráficos da GUI do Client vêm de um Customization Package (um arquivo zip) que define a identidade visual do VMS. Um pacote padrão com a marca Nx-Meta e placeholders é obtido do Conan; pacotes personalizados podem ser gerados no Nx Meta Developer Portal. Os scripts de conveniência `build.sh` (Linux/macOS) e `build.bat` (Windows) encapsulam as etapas de configuração e build do CMake. Eles criam um diretório de build como irmão da raiz do repositório, com o sufixo `-build`. Uma execução simples produz um build Debug limpo, com executáveis em `nx_open-build/bin/`; `-DdeveloperBuild=OFF` produz um build Release com pacotes de distribuição e um arquivo de testes unitários em `nx_open-build/distrib/`. Um pacote personalizado pode ser fornecido com `-DcustomizationPackageFile=<customization.zip>`, cujo id em `description.json` deve corresponder ao do Server. Builds incrementais apenas reexecutam o script; a geração é disparada novamente de forma automática quando necessário. A compilação cruzada usa `-DtargetDevice=` com valores como `linux_x64`, `linux_arm64`, `linux_arm32`, `macos_x64`, `macos_arm64`. O build e a depuração pela IDE do Visual Studio são suportados após executar a etapa de geração pela linha de comando. Definir `NX_CONAN_DOWNLOAD_CACHE` evita baixar artefatos novamente em builds limpos. ## Assinatura No Windows, os executáveis e o arquivo de distribuição podem ser assinados com um certificado de publicador PKCS#12 via `signtool.py`, configurado por um arquivo YAML (caminho do certificado, senha, servidores de timestamp opcionais) e habilitado com `-DsigntoolConfig=`. Um certificado de teste autoassinado pode ser gerado com o script em lote fornecido. O Linux não exige assinatura e não inclui ferramentas. Uma ferramenta autônoma de assinatura para macOS é descrita como ainda em desenvolvimento. ## Executando o cliente e compatibilidade com o servidor O Desktop Client é executado diretamente do diretório de build. No Windows, `activate_run.bat` (gerado pelo Conan) deve ser executado primeiro para definir o PATH e outras variáveis; `deactivate_run.bat` as restaura. Como os fontes do VMS Server não são públicos, um cliente compilado a partir deste repositório só pode se conectar a um Server compatível obtido de uma versão pública do VMS, incluindo versões de pré-visualização do Nx Meta VMS. A compatibilidade é garantida apenas quando o Client é compilado a partir do mesmo commit do Server, identificado por tags git como `vms/4.2/12345_release_all`. Clientes de commits posteriores na mesma branch podem continuar funcionando por um tempo, mas podem perder a compatibilidade. Client e Server também devem usar Customization Packages com o mesmo customization id. O sistema de build tenta derivar a versão compatível do Server a partir das tags git durante a geração; `-DbuildNumber=` pode substituir isso e `-DbuildNumber=AUTO` restaura a detecção automática. As atualizações automáticas do VMS estão desabilitadas para o Desktop Client de código aberto, pois sobrescreveriam um build personalizado por um build feito pela Nx; ainda assim, um administrador pode forçar essa atualização. Servidores e pacotes de atualização personalizados são tecnicamente possíveis, e instruções ou ferramentas podem ser fornecidas no futuro.