mirror of
https://github.com/dexoron/dcr.git
synced 2026-10-21 22:59:35 +00:00
- Updated build and run commands to accept a --target option for specifying target platforms. - Enhanced documentation to include cross-compilation usage and supported targets. - Modified configuration to allow target-specific settings and toolchains. - Introduced a new test command to run project tests with specified profiles and targets. - Improved handling of target directories and output structure for different platforms. - Added support for multiple targets in the configuration file. - Implemented inheritance for workspace and dependencies based on target and profile.
80 lines
1.7 KiB
Markdown
80 lines
1.7 KiB
Markdown
# Contributing
|
|
|
|
Thanks for your interest in the project.
|
|
|
|
## Requirements
|
|
|
|
- Use Rust stable.
|
|
- Before opening a PR, the code must pass formatting, linting, and build.
|
|
|
|
## Quick Start
|
|
|
|
```bash
|
|
git clone https://github.com/dexoron/dcr.git
|
|
cd dcr
|
|
cargo check
|
|
```
|
|
|
|
## Code Style
|
|
|
|
- Format code with `cargo fmt`.
|
|
- Check warnings with `cargo clippy`.
|
|
- Keep functions small and focused.
|
|
- Prefer clear names over clever ones.
|
|
|
|
## Target System
|
|
|
|
DCR supports cross-compilation via `--target <triple>` or short names:
|
|
|
|
- `dcr build --target linux --release` (maps to `x86_64-unknown-linux-gnu`)
|
|
- `dcr build --target macos --release` (maps to `x86_64-apple-darwin`)
|
|
- `dcr build --target windows --release` (maps to `x86_64-pc-windows-msvc`)
|
|
- Full triples: `dcr build --target aarch64-linux-gnu --release`
|
|
- Configure multiple targets in `dcr.toml`:
|
|
```
|
|
[build.targets]
|
|
targets = ["linux", "macos"]
|
|
|
|
[build.linux]
|
|
compiler = "gcc"
|
|
|
|
[build.macos]
|
|
compiler = "clang"
|
|
```
|
|
- If no `--target`, builds for targets in `build.targets` or native if empty.
|
|
|
|
## Checks
|
|
|
|
Before PR, run:
|
|
|
|
```bash
|
|
cargo fmt --all
|
|
cargo clippy --all-targets --all-features -- -D warnings
|
|
cargo check
|
|
cargo test
|
|
```
|
|
|
|
## CI/CD and Releases
|
|
|
|
- CI: `.github/workflows/ci.yml`
|
|
- Release: `.github/workflows/release.yml`
|
|
- Releases are triggered by tags `v*` and publish binaries for:
|
|
- `x86_64-unknown-linux-gnu`
|
|
- `x86_64-apple-darwin`
|
|
- `aarch64-apple-darwin`
|
|
- `x86_64-pc-windows-msvc`
|
|
|
|
## Commits and PRs
|
|
|
|
- Write clear commit messages.
|
|
- In PRs, include a short description and rationale.
|
|
- Update documentation when behavior changes.
|
|
|
|
## Questions
|
|
|
|
If anything is unclear, open an issue or ask in the PR.
|
|
|
|
You can also reach out directly:
|
|
- TG: @dexoron
|
|
- DS: dexoron
|