# Windows native dependencies The project uses Qt 5.12.4 with its 64-bit MinGW 7.3 kit: - Qt: `C:\Qt\Qt5.12.4\5.12.4\mingw73_64` - Compiler: `C:\Qt\Qt5.12.4\Tools\mingw730_64` - gRPC 1.48.4 and Protobuf 3.19.5 - FFmpeg 4.4.5 with H.264, H.265/HEVC and MJPEG decoders - MsQuic 2.5.9 OpenSSL x64 - urdfdom 4.0.3 Do not use an MSVC, 32-bit, or different MinGW kit. The native libraries in `lib` use the Qt MinGW 7.3 64-bit ABI. ## Project layout The application build has no dependency on `third_party/install`: ```text include/ dependency headers lib/ static libraries, import libraries and runtime DLLs tools/ protoc.exe, grpc_cpp_plugin.exe and the protoc launcher certs/ QUIC test certificate and CA ``` Both qmake and CMake link only from `lib`. qmake copies every `lib/*.dll` into the selected executable directory (`bin/debug` or `bin/release`) during the build. QUIC certificates and the demo URDF are deployed beside the executable at the same time. `tools/run_protoc.cmd` adds `lib` to the proto compiler process PATH. This lets `protoc.exe` and `grpc_cpp_plugin.exe` load their MinGW runtime DLLs without duplicating DLL files under `tools`. ## Rebuilding dependencies The checked-in `include`, `lib`, `tools`, and `certs` directories are enough to build the application. To rebuild all native dependencies from source, run: ```powershell powershell -ExecutionPolicy Bypass -File .\scripts\build_native_deps.ps1 -Jobs 4 ``` The script creates a temporary `third_party` download/build/install tree and then runs `scripts/stage_native_deps.ps1` to refresh the four project directories above. `third_party` is ignored and can be removed after staging. To refresh only the staged files from an existing install tree: ```powershell powershell -ExecutionPolicy Bypass -File .\scripts\stage_native_deps.ps1 ``` ## Qt Creator Open `CmvrControlStation.pro`, select the Desktop Qt 5.12.4 MinGW 64-bit kit, run qmake, and then rebuild. Debug and Release are kept separate: ```text bin/debug/CmvrControlStation_d.exe bin/release/CmvrControlStation.exe ``` Proto sources are read from the project-local `protos` directory and generated under `generated_cpp`. No file from `cmvr-es` or another source repository is required during compilation. ## QUIC certificate To generate a test server certificate containing the machine LAN address: ```powershell .\scripts\install_msquic.ps1 -ServerIp 192.168.0.118 .\scripts\stage_native_deps.ps1 ``` The client must trust `certs/quic-test-ca.crt`. The PFX password is `cmvr-test`. ## Application deployment The `.pro` file deploys native DLLs maintained in `lib`, including FFmpeg, MsQuic, urdfdom, zlib, and the MinGW runtime. Qt framework DLLs and Qt plugins remain owned by the selected Qt kit; use `windeployqt` when producing a standalone distribution outside Qt Creator.