CmvrControlStation/NATIVE_DEPS.md

2.8 KiB

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:

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 -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 -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:

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:

.\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.