86 lines
2.8 KiB
Markdown
86 lines
2.8 KiB
Markdown
# 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.
|