Compiler HDDS depuis les sources
Ce guide couvre la compilation de HDDS depuis les sources pour les contributeurs, la personnalisation ou les plateformes sans paquets pré-compilés.
Prérequis
Toutes les plateformes
- Git
- Rust 1.75+ avec
cargo - CMake 3.20+ (pour les bindings C/C++)
Linux
# Ubuntu/Debian
sudo apt install build-essential git cmake pkg-config libssl-dev
# Fedora/RHEL
sudo dnf install gcc gcc-c++ git cmake openssl-devel
# Arch
sudo pacman -S base-devel git cmake openssl
macOS
xcode-select --install
brew install cmake openssl
Windows
- Visual Studio 2019+ avec la charge de travail C++
- Git for Windows
- CMake
Cloner le dépôt
git clone https://git.hdds.io/hdds/hdds.git
cd hdds
Compiler HDDS (Rust)
Build debug
cargo build
Build release (optimisé)
cargo build --release
Avec toutes les features
cargo build --release --all-features
Lancer les tests
cargo test
# With verbose output
cargo test -- --nocapture
# Integration tests only
cargo test --test integration
Lancer les benchmarks
cargo bench
Compiler les bindings C/C++
cd bindings/c
# Configure
cmake -B build -DCMAKE_BUILD_TYPE=Release
# Build
cmake --build build --config Release
# Install (Linux/macOS)
sudo cmake --install build
# Install (Windows, as Administrator)
cmake --install build
Options CMake
| Option | Défaut | Description |
|---|---|---|
HDDS_BUILD_TESTS | ON | Compiler la suite de tests |
HDDS_BUILD_EXAMPLES | ON | Compiler les applications d'exemple |
HDDS_ENABLE_SECURITY | ON | Activer DDS Security |
HDDS_ENABLE_SHM | OFF | Activer le transport en mémoire partagée |
CMAKE_INSTALL_PREFIX | /usr/local | Répertoire d'installation |
Exemple avec options :
cmake -B build \
-DCMAKE_BUILD_TYPE=Release \
-DHDDS_ENABLE_SHM=ON \
-DCMAKE_INSTALL_PREFIX=/opt/hdds
Compiler les bindings Python
cd bindings/python
# Create virtual environment
python -m venv .venv
source .venv/bin/activate # Linux/macOS
# .venv\Scripts\activate # Windows
# Install build dependencies
pip install maturin
# Build and install
maturin develop --release
# Or build wheel
maturin build --release
pip install target/wheels/hdds-*.whl
Compiler la documentation
# Rust docs
cargo doc --no-deps --open
# Full docs with dependencies
cargo doc --open
Structure du projet
hdds/
|-- Cargo.toml # Racine du workspace
|-- crates/
| |-- hdds/ # Bibliothèque principale
| | |-- src/
| | | |-- lib.rs
| | | |-- participant.rs
| | | |-- topic.rs
| | | |-- writer.rs
| | | |-- reader.rs
| | | |-- ...
| | |-- Cargo.toml
| |-- hdds-async/ # Wrapper async
| |-- hdds-gen/ # Générateur de code
| |-- hdds-types/ # Système de types
| |-- hdds-transport/ # Couche transport
|-- bindings/
| |-- c/ # Bindings C
| |-- cpp/ # Bindings C++
| |-- python/ # Bindings Python
|-- examples/ # Applications d'exemple
|-- tests/ # Tests d'intégration
|-- benches/ # Benchmarks
Workflow de développement
Formater le code
cargo fmt
# Check only (CI)
cargo fmt -- --check
Lancer Clippy
cargo clippy --all-targets --all-features -- -D warnings
Lancer toutes les vérifications
# This is what CI runs
cargo fmt -- --check
cargo clippy --all-targets --all-features -- -D warnings
cargo test --all-features
cargo doc --no-deps
Cross-compilation
Linux ARM64 (depuis x86_64)
# Add target
rustup target add aarch64-unknown-linux-gnu
# Install cross-compiler
sudo apt install gcc-aarch64-linux-gnu
# Build
cargo build --release --target aarch64-unknown-linux-gnu
Avec cross
# Install cross
cargo install cross
# Build for ARM64
cross build --release --target aarch64-unknown-linux-gnu
# Build for Windows from Linux
cross build --release --target x86_64-pc-windows-gnu
Builds embarqués (no_std)
Pour les cibles embarquées :
cd crates/hdds-micro
# Build for Cortex-M4
cargo build --release --target thumbv7em-none-eabihf
# Build for ESP32
cargo build --release --target xtensa-esp32-none-elf
Dépannage
Erreurs de compilation
"Can't find OpenSSL"
# Linux
sudo apt install libssl-dev
# macOS
brew install openssl
export OPENSSL_DIR=$(brew --prefix openssl)
# Windows: Download from slproweb.com/products/Win32OpenSSL.html
"Linker error on Windows"
Assurez-vous d'avoir installé la charge de travail C++ de Visual Studio et d'utiliser la bonne toolchain MSVC :
rustup default stable-x86_64-pc-windows-msvc
Problèmes de performance
Pour des performances maximales :
# Enable LTO and native CPU optimizations
RUSTFLAGS="-C target-cpu=native -C lto=fat" cargo build --release
Contribuer
Voir CONTRIBUTING.md pour :
- Les conventions de code
- Le processus de pull request
- Le signalement de bugs
Prochaines étapes
- Hello World Rust - Tester votre compilation
- Contribuer - Contribuer à HDDS