CmvrControlStation/NATIVE_DEPS.md

86 lines
2.8 KiB
Markdown
Raw Permalink Normal View History

2026-09-18 16:22:20 +08:00
# 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.